Ruby on Railsでフォームの簡単な使い方の紹介です。
Railsでは、Action Viewのフォームヘルパーを使うことで簡単に記述できます。
🍮 フォームのサンプルコード
記事(Article)の新規作成フォームのサンプルを紹介します。まずControllerです。
def new |
View側では次のように記述します。
<%= form_for @article, do%=> |f| %> |
上記のViewから次のHTMLが生成されます。
<form accept-charset=UTF-8 action=/articles/create method=post> |
View側のコードの概要を説明します。
要素 | 説明 |
---|---|
form_for @article |
@articleからフォーム要素を生成 |
f.label |
対応するラベルを生成 |
f.text_field |
テキストの入力フォームを生成 |
f.text_area |
テキストエリアの入力フォームを生成 |
f.submit |
送信ボタンを生成 |
🐡 フォーム要素の生成
form_for
メソッドでフォーム要素を生成します。
<%= form_for(@book, url: 'http: example.com', html: {method: 'get'}) %>%=> |
オプションでURLを渡してFormの渡す先を指定したり、html: { method: GET }
などでGETやPOSTを指定できます。
🎳 セレクトボックス
セレクトボックス(タグ)のオプションに配列を渡す
f.select
のサンプルです。
<%= f.select(:sex%=>, [['Male', 1], ['Female', 2]]) %> |
🍄 コレクションに対してセレクトボックスを生成
セレクトボックス(タグ)を生成する
f.collection_select
のサンプルです。
<%= f.collection_select(:prefecture_id%=>, Prefecture.all, :id, :name) %> |
これは:city_id
要素に対してセレクトボックスを生成します。City
のすべての要素を取得し、valueにid
、テキストにname
を入れた選択肢を作ります。
出力されるHTMLは次のようになります。
<select id=person_prefecture_id name=person[prefecture_id]> |
🎉 チェックボックス
チェックボックス(タグ)を生成する
f.check_box
のサンプルです。
<%= f.check_box 'agreement'%=>, {:checked => true}, true, false %> |
出力されるHTMLは次のようになります。
<input name="page[freezeflag]" type="hidden" value="false" /> |
🎂 テキストボックス
テキストボックス(タグ)を生成する
f.text_field
のサンプルです。
<%= f.text_field :name%=> %> |
出力されるHTMLは次のようになります。
<input id="page_name" name="page[name]" size="30" type="text" /> |
🐞 補足:エラーがあるときだけinput直下にエラーメッセージを表示
inputフォームをバリデーションしてエラーがあるときだけエラーメッセージを表示させたい場合は、config/application.rb
に次のように記述します。
config.action_view.field_error_proc = Proc.new do |html_tag, instance| |
🐹 参考リンク
- Action View フォームヘルパー
- check_box_tag - リファレンス
- Railsのform_forの使い方がリファレンス見てもいまいちわからなかったので俺式に全力で整理してみた
- [Rails] バリデーションエラーの表示を自在に操る