結論
フォームのデータをコントローラーでparams[:モデル名][:キー]でデータを受け取るかparams[:キー]で受け取るかの違い
modelオプション
⇨params[:モデル名][:キー]でデータを受け取る
urlオプション
⇨params[:キー]でデータを受け取る
modelオプション
例
<%= form_with model: CartProduct.new do |f| %> <%= f.number_field :quantity, class: "form-control text-center me-3", style: "max-width: 4rem", min: 1, max: 100%> 省略 <% end %>
modelオプションでモデルのインスタンス(@cart_productなど)を渡すかModel名.newで設定すると.
コントローラー内で
params{ "cart_product"=>{"quantity"=>"4"} }
このようになります。 paramsの中に[:モデル名][:key]のようになります.
urlオプション
例
<%= form_with url: "/cart_products/1" do |f| %> <%= f.number_field :quantity, class: "form-control text-center me-3", style: "max-width: 4rem", min: 1, max: 100%> 省略 <% end %>
このようにurlで指定すると
params{ {"quantity"=>"4","id"=>"1"} }
このようになります。modelオプションの時とは違い[:model名]が入らずにシンプルになります。またform_with url: "/cart_products/1" do |f| %>で設定した/cart_products/1の1の部分が{id:1}のようにparamsの中に格納されます
まとめ
modelオプションもurlオプションもしていることは指定したサーバーにフォームのデータを送ることが目的ですが、それぞれparamsの中の中にデータを入れる方法が異なることがわかりました。