Ruby on Rails3 アプリケーションプログラミング の読書メモ 4章 4章: ビュー開発
4.1: フォーム関係のビューヘルパ
HTML5対応のビューヘルパは、以下の通り
- email_field
- telephone_field
- number_field
- range_field
- search_field
- url_field
非対応ブラウザだと、テキストフィールドになる
form_tag, form_for
フォーム生成用のタグは2種類
form_tag
- モデルに依存しない汎用的なフォームを生成
- 検索formとか
form_for
- 特定のモデルオブジェクトを編集するのに特化
- 新規、編集用のフォーム
それぞれで、使えるビューヘルパが異なる
FormTag、Form、f.Form
フォームの中の入力フィールドを書く為の方法が3種類ある
呼び名 | 具体例 | 解説 |
---|---|---|
FormTag | label_tag | モデルに関連づかない |
Form | label | form_tag用 |
f.Form | f.label | form_for用 |
<%= form_tag(:action => 'create') do %> <%= text_field_tag('keyword') %> # FormTagヘルパ <%= text_field(:book, :title) %> # Formヘルパ @book.title に格納される <%= form_for(@book) do |f| do %> <%= f.text_field(:title) %> # f.Formヘルパ。Formヘルパと異なり、オブジェクトの指定が不要 # text_field(:book, :title) と同じ
form_for は、モデルオブジェクトの状態と、routesの定義で、フォームの送信先を補完する
collection_select
モデルの内容を元に、selectタグを生成する
grouped_collection_select
1対多のモデルの内容を元に、グループ分けされた、selectタグを生成する
date_select, datetime_select, time_select
オプション
- use_month_numbers : 月を数値で表示
- start_year, end_year : 範囲。デフォルトは、現在±5年
- discard_day, discard_month, discard_year : 日, 月, 年を非表示
- default : デフォルト値
submit
オプション
- disable_with : 二度押し防止対応。1回押下した後の表示名を設定
- confirm : 確認ダイアログ表示
fields_for
1対多、1対1のモデルを編集する為のヘルパ
<%= form_for(@user) do |f| %> <%= field_set_tag('著作者情報') do %> <%= fields_for @user.author do |af| %> <%= af.text_field(:name) %> <% end %> <% end %> <% end %>
1対多の場合については、以下を参照