使用環境
ruby2.6.8
rails6.1.4
#form_withとは
railsで情報を送信するためのヘルパーメソッド。
form_withを使うことにより、簡単に入力フォームに必要なHTMLを作成することが可能。
rails5.1から追加されたフォームを作成するためのヘルパーメソッドで、それ以前に用いられていたform_tagやform_forのように用いられている。
(現在はform_withを使うことが推奨されている)
#form_withの使い方
form_tagのように入力された情報をデータベースに保存しない場合
<%= form_wth url: "パス" do |f| %>
内容
<% end %>
データベースに保存する場合
<%= form_with model: モデルクラスのインスタンス %>
内容
<% end %>
上のようなデータベースに保存する場合でもpathの指定は可能で
<%= form_with model: モデルクラスのインスタンス,url: "パス" %>
内容
<% end %>
のような形で書くことで予期せぬエラーを私は解決することができた。
ここでいう「モデルクラスのインスタンス」とは保存したいテーブルのクラスのインスタンスのこと。今回はpostテーブルに新たにレコードを追加したかったので、コントローラ側で以下のように記述した
def new
@post = Post.new
end
この@postをview側で記述すればよい。
#form_withで使用できるhtmlタグ
メソッド | 用途 |
---|---|
form.text_field | 一行のテキスト投稿フォーム |
form.text_area | 複数行のテキスト投稿フォーム |
form.number_field | 数値入力ボックスを生成 |
form.search_field | 一行の検索フォーム |
form.email_field | メールアドレス入力ボックスを生成 |
form.check_box | データベースの情報を使わないでチェックボックスを生成 |
form.collection_check_boxes | データベースの情報を元にチェックボックスを生成 |
form.select | 選択肢を作成 |
form.collection_select | データベースの情報を元に選択肢を生成 |
form.file_field | ファイル選択ボックスを生成 |
form.datetime_field | 日時の入力欄を生成 |
form.date_select | 日付選択ボックスを生成 |
form.hidden_field | 非表示のフォーム |
form.submit | 送信ボタンの生成 |
参考記事
https://pikawaka.com/rails/form_with
https://rails-ambassador.herokuapp.com/tips/FormWithHelper