質問: form_tagで送信された数値をbodiesモデルに数値を保存したいのですが、うまくcreateコントローラーに渡せません。binding.pryで検証したところ、他のbody_titleとbody_textに入力した値は、正常にコントローラーに送れているので、おそらく以下の中のどこかがおかしい気がするのですが。 ### 該当のソースコード ``` <%= form_tag('/contents/content_id/bodies', method: :post) do %> 本文画像と本文(小見出し+本文テキスト)を投稿する <% end %> ```
回答: こんにちは。 回答させていただきます。 まずRailsメソッドであるform_tagの中でHTMLをベタ書きで書くのは混乱を招くので避けたほうが良いです。 number_field_tag、 text_field_tagなどのメソッドが用意されているのでそちらを使用するようにしましょう。 また、コントローラに値が渡っていない理由はおそらく渡せるカラムを指定していないからだと思われます。 ``` text_field_tag :body_title, {}, placeholder: "小見出し" ``` このような感じで指定してみるとうまくいくかもしれません。 また今回はbodiesモデルというモデルに基づいたフォームを作りたい時はform_forを使用するのが一般的です。 コントローラでインスタンス変数を生成し ``` <%= form_for @body do |f| %> フォームの内容 <% end %> ``` このように書くと良いでしょう ご参考になれば幸いです。