前提・実現したいこと
SNSを作っています。投稿にリプライをつける機能を実装したいのですが、paramsの値がnilになってしまいます。
該当のソースコード
<%= form_with url: '/posts' , local: true do |f| %> <% f.hidden_field :parent_id, { value: @post.id} %> <div class ="form-group"> <%= f.text_area :content, class: "form-control", placeholder: "返信を入力(140文字以内)" %> </div> <div class ="text-center"> <%= f.submit "送信する", class: "btn btn-primary" %> </div> <% end %>
これがフォームのHTMLです。
def create if params[:parent_id] @post = Post.new(content: reply_params[:content], user_id: @current_user.id, parent_id: params[:parent_id]) if @post.save redirect_to post_path(params[:parent_id]), notice: '送信しました' else flash[:alert] ='送信に失敗しました' render post_path(params[:parent_id]) end else @post = Post.new(content: post_params[:content], user_id: @current_user.id) if @post.save redirect_to root_path, notice: '送信しました' else flash[:alert] = '送信に失敗しました' render :new end end end
これがコントローラーのcreateメソッドです。
フォームの中でhidden_fieldで受け渡したparent_idをcreateメソッド内で使いたいのですが、params[:parent_id]の値がnilになってしまいます。
params[:content]などの、フォームに入力したあたいはうまく受け取れています。
params[:parent_id]を受け取るにはどうすればいいのでしょうか。
フォームはshowアクションのviewに書いていて、そこからcreateアクションを呼び出そうとしているためにこのような不具合が起きているのかもしれないと思っています。
回答3件
あなたの回答
tips
プレビュー