この記事ではmacOS Catalina10.15.6にインストールしたRuby 2.6.5を使っています。
form_withとは
- 情報を送信するためのヘルパーメソッドです。
- 入力に必要なHTMLを表示してくれます。
- form_withには2つの書き方があります。
- 1つ目は、入力された情報をデータベースに保存する場合、2つ目は__入力された情報をデータベースに保存しない場合__です。
データベースに保存する時
-
model:
に続けて__モデルクラスのインスタンス__を記述します。 -
f.text_field
でテキストボックスを作成します。
<%= form_with model: @book, local: true do |f| %>
<%= f.text_field :keyword, placeholder: "keyword", class: "search-input"%>
<%= f.submit "search", class: "search-btn" %>
<% end %>
データベースに保存しない時
-
url:
に続けて__情報送信先のパス__を記述します。
<%= form_with url: search_path, local: true do |f| %>
<%= f.text_field :keyword, placeholder: "keyword", class: "search-input"%>
<%= f.submit "search", class: "search-btn" %>
<% end %>
ルーティングでネストしている場合
- 例えばpostコントローラーにcommentコントローラーのルーティングがネストしているとしましょう。
- その場合、コードはこんな感じになります。
- __モデルクラスのインスタンスを親クラスと子クラスの順で2つ__記述すれば良いのですね。
<%= form_with model: [@post, @comment] do |f| %>
<%= f.text_field :comment%>
<%= f.submit %>
<% end %>
参考
https://pikawaka.com/rails/form_with
https://qiita.com/hmmrjn/items/24f3b8eade206ace17e2