PostsController
1class PostsController < ApplicationController 2 def index 3 4 @posts = Post.all 5 end 6 7 def new 8 @post = Post.new 9 end 10 11 def create 12 Post.create(post_params) 13 end 14 15 16 def edit 17 @post = Post.find(params[:id]) 18 end 19 20 def update 21 post = Post.find(params[:id]) 22 if post.user_id == current_user.id 23 post.update(post_params) 24 end 25 end 26 27 def show 28 @post = Post.find(params[:id]) 29 @comment = Comment.new 30 end 31 32 33 def destroy 34 post = Post.find(params[:id]) 35 if post.user_id == current_user.id 36 post.destroy 37 end 38 end 39 40 41 private 42 def post_params 43 params.require(:post).permit(:text).merge(user_id: current_user.id) 44 end 45end
postsindex
1<div class="contents_row"> 2 <% @posts.each do |post| %> 3 <li> 4 <%= link_to '削除', "/posts/#{post.id}", method: :delete %> 5 </li> 6 <li> 7 <%= link_to '編集', "/posts/#{post.id}/edit", method: :get %> 8 </li> 9 <li> 10 <%= link_to '詳細', "/posts/#{post.id}", method: :get %> 11 <li> 12 13 14 <%= simple_format(post.text) %> 15 <% end %> 16</div>
postsshow
1<div class="contents_row"> 2 3 4 <div> 5 <%= simple_format(@post.text) %> 6 </div> 7 8 <span class="name"> 9 <a href="/users/<%= @post.user.id %>"> 10 <span>投稿者</span><%= @post.user.name %> 11 </a> 12 </span> 13 14 15 <%= form_for [@post, @comment] do |f| %> 16 <%= f.text_field :text %> 17 <%= f.submit %> 18 <% end %> 19 20 21 22 23 24</div>
CommentsController
1class CommentsController < ApplicationController 2 def new 3 end 4 5 def create 6 Comment.create(text: comment_params[:text], post_id: comment_params[:post_id], user_id: current_user.id) 7 end 8 9 private 10 def comment_params 11 params.permit(:text, :post_id) 12 end 13end 14
詳細ページからコメントするためにコメントコントローラーでcreateしてもなぜか内容がデータベースにデータが保存されずに悩んでいます。
エラーは出ずにtextカラムがnullのまま送信されてしまっている状態です。
お力を貸していただけると助かります。
お手数ですがよろしくお願いします。
DBにおけるinsertとupdateの用法を混同してませんか?
既に作られたデータに新たにカラム内のデータを追加挿入する場合はupdateです。
確認ですが、お悩みの内容は「DBにコメントが保存されない」であって「保存したコメントが画面に表示されない」ではないですよね?
質問に書いていただいているコードの中に、保存したコメントを表示するためのコードが無かったので、それが意図通りなのかどうか気になりました。
回答ありがとうございます。返信遅れてすいません。
そのとおりです。dbにコメントが保存されない。nullになってしまう状況です。
現時点で表示するためのコードはかいていません。
すでに作られたカラムに記入したいというよりposts>show.html.erbのform_for部分からtextを送信してもなぜかtext部分だけnullになってしまう状況です。
了解です。
回答欄にも書きましたが、CommentsController の comment_params の処理が怪しいかなと思います。
params の中身がどうなっているか、一度確認してみてください。
(comment_params ではなく、params の中身を確認する)
返信ありがとうございます。
paramsの中身を確認させて頂きました。
"utf8"=>"✓", "authenticity_token"=>"==", "comment"=>{"text"=>"ccccc"}, "commit"=>"Create Comment", "controller"=>"comments", "action"=>"create", "post_id"=>"5"} permitted: false>
ccccc部分が送信したtextになります。
回答1件
あなたの回答
tips
プレビュー