Rails基礎 フォームヘルパー(form_for)
フォームヘルパーとは?
Railsでフォームを作成するためのヘルパー。 これを使用すると簡単な記述でフォームを作成することが可能になる。 内部ではHTMLを生成してくれる。input、textarea、submit等
form_for
form_tag
form_with
と3種類用意されているが、Rails5.1で登場したform_withは他2つを統合したものになるため、 Rails5.1以降はform_withを使用することが推奨されている
今回ドットインストールに出てきたのがform_for
だったため、これについて書いていく。
form_for
form_forは特定のモデルを編集・作成するのに向いている。 フォームとモデルオブジェクトを紐付けることで簡単に作成することができる。
html.erbファイルに記述していく。
<%= form_for @post, url: posts_path do |f| %> <p> <%= f.text_field :title, placeholder: 'enter title' %> </p> <p> <%= f.text_area :body, placeholder: 'enter body text' %> </p> <p> <%= f.submit %> </p> <% end %>
ちなみに、1行目を省略しないで書くと以下
<%= form_for(@post, {url: posts_path}) do |f| %>
オプション
オプション | 説明 | デフォルト値 |
---|---|---|
:as | ハッシュのキー名前 | |
:url | フォームの送信先 | |
:namespace | 名前空間の設定 | |
:method | メソッド(get, post, patch, put, deleteなど) | |
:authenticity_token | 認証トークン | |
:remote | JavaScriptを使うか | false |
:enforce_utf8 | utf8用の非表示用を出力するか? | true |
:html | タグの属性 | |
:format | フォーマット |
form_forでの入力は、上記の場合post[属性名]
というフォーム名を持つ。
今回だと:title
と:body
キーを持つハッシュがparams[:post]
に入る。
:url
オプションを渡しルーティングパスを指定している。
Controllerで作成したインスタンスが空であればcreateアクション、そうでなければupdateアクションへ自動的に振り分けてくれる。
fオブジェクト
を使用することでテキストボックスをはじめ、チェックボックスやパスワード入力ボックス、ファイル選択フォーム等を簡単に作成することが可能になる。
- check_box…チェックボックス
- radio_button…ラジオボタン
- text_area…テキストエリア
- password_field…パスワード入力ボックス
- hidden_field…隠しフィールド
- label…ラベルタグ
- text_field…テキストボックス
- file_field…ファイル選択ボックス
- select…選択ボックス
- email_field…メールアドレス入力ボックス
- number_field…数値入力ボックス
- range_field…範囲選択バー
- search_field…検索ボックス
- telephone_field…電話番号入力ボックス
- url_field…URL入力ボックス
- submit…サブミットボタン
- datetime_select…日時選択ボックス
- color_field…色の入力欄
- date_field…日付の入力欄
- datetime_field…日時の入力欄
- datetime_local_field…ローカル日時の入力欄
- month_field…月の入力欄
- time_field…時間の入力欄
- week_field…週の入力欄
- date_select…日付選択ボックス
- time_select…時間選択ボックス
等…最後に_tag
をつけると汎用的な○○
ができるらしい。
いずれ各メソッドがどんな形でこれらを生成するのか確かめたい。