【Rails】form_withについて(scopeオプション)
はじめに
form_withでscopeオプションがあるとないとでは、データの送られ方がどう違うの気になったので調べてみました。
scopeなし
コントローラーで受け取ったparams(値)を見てみると、
<ActionController::Parameters {"authenticity_token"=>"nPZ6KTkVEA3QFWhaPDV30Bf6VjRbyey//NPjvjbDYoTcAKLOAsZGxXBJcknlsYmuvpFtwIhNPsVM1ShbLSQu7w==", "title"=>"こんにちは", "text"=>"おはようございます。", "commit"=>"Save ", "controller"=>"articles", "action"=>"create"} permitted: false>
Prametersハッシュでtitleとtextがキーになってますね。
scopeあり
コントローラーで受け取ったparams(値)を見てみると、
params => <ActionController::Parameters {"authenticity_token"=>"ZFO8Q1cdUc5rR6Rkrj5ZcL93isCIpKJFn223e+31KjwkpWSkbM4HBssbvnd3uqcOFhyxNFsgcD8va3ye9hJmVw==", "article"=>{"title"=>"こんにちは", "text"=>"おはようございます。"}, "commit"=>"Save Article", "controller"=>"articles", "action"=>"create"} permitted: false>
Prametersハッシュの中にarticleハッシュがありますね。その中でtitleとtextがキーになってます。 つまり、コントローラーではparams[:article]と書くだけで両方の値が受け取れるんです。 scopeがないとparams[:title]とparams[:text]と2つ書かなければいけないのです。 scopeを使うメリットありますね。