#状況
食べログのようなアプリを作っています。Userモデル、Shopモデル、Reviewモデルと3つのモデルがあり、ユーザーがお店に対してレビューを投稿するフォームを作っています。
お店の詳細ページからレビュー投稿フォームに書いて投稿します。
例えば/shops/1/show
からreviewsコントローラーのcreateアクションに情報をとばします。
#問題
フォームを送信すると情報を受け取った側のreviewsコントローラーでパラメーターがないというエラーが発生してしまいます。
画面に表示されるエラーは以下の通りです。
![
そこでフォームの画面をデベロッパーツールで確認して見ると、フォームに適切なname属性が入っていませんでした。本当はname = "review[title]"
のようになって欲しいものがname = "title"
となっており、strongparamsで設定した適切な形で情報を受け取れていませんでした。
おそらくform_withの書き方に問題があるのだと思うのですが、どのように修正すれば良いのでしょうか。
フォームがあるのはshopの詳細画面(/shops/1
)で、そこから/users/1/reviews/
にPOSTアクションをとばします(ログイン中のユーザーと投稿を紐付けるため)。
ルーティングの書き方も少し自信がないです...
フォームは以下の通りです。
show
1<%= form_with(model: @review, url: user_reviews_path(current_user), local: true) do |f| %> 2 <%= f.label :title, "タイトル" %> 3 <%= f.text_field :title, class: 'form-control' %> 4 5 <%= f.label :content, "本文" %> (300文字以内でお書きください) 6 <%= f.text_area :content, rows:10, class: 'form-control text_area' %> 7 8 <%= hidden_field_tag :shop_id, @shop.id %> 9 10 <%= f.submit '登録', class: "btn btn-dark " %> 11<% end %> 12
解決するのに他に必要な情報がありましたらご指摘ください。
よろしくお願いします。
回答4件
あなたの回答
tips
プレビュー