【Rails】form_withのちょっと便利な使い方
以前紹介したフォームの作成で使用したform_withメソッドですが、
もっと便利な使い方を発見したのでこちらに書いていこうと思います。
以前紹介した際の記載の仕方は
<%= form_with url : "/posts" , method: :post , local : true do |form| %>
でした。
この時わざわざurlを指定したり
methodでHTTPパスを指定しなければいけなかったのですが、
modelオプションとやらを使うと、これがもっと簡単になるんです。
このmodelの引数に、インスタンス変数をもってくるのです。
どこから?
コントローラーのnewアクション(生成)を定義したときに、
インスタンス変数も定義しておくのです。
コントローラーで定義したインスタンス変数はビューファイルに
引っ張ってこれるので。
(routes.rb)
def index
@Posts = Post.all
end
def new
@post = Post.new(postの生成)
end
こんな感じで。
単数形なのはおそらく新規投稿されるpostは一つだから、
だと思ってます。
真相を知ってる方は教えてください。
modelオプションの話に戻りましょう。
なのでmodelの引数には@postを持ってきます。
<%= form_with (model: @post , local: true) do |form| %>
これで投稿ページにいきたい!というリクエストに対して
パスとしてnewアクションが指定され、new.html.erbへ遷移する処理が行われます。
以上、form_withのより便利な使い方でした。