RubyonRailsのform_tag備忘録

頻繁に使うくせに、いつまでたっても覚えられない。ついついコピペして使いまわしちゃうから「あれ、どうやって書くんだっけ」の繰り返しになってしまう。

これは、確認も含めて整理しておこう。

<% form_tag ({:controller => ‘コントローラ’, :action => ‘アクション’}, {:method => ‘post’, :multipart => true}) do %>
  <dl>
    <dt>入力してください。「テキストボックス」</dt>
    <dd><%= text_field_tag :hoge, nil, :style => ‘width:320px;’ %></dd>
    <dt>選択してください「ラジオボタン」</dt>
    <dd>
      <label><%= radio_button_tag :status, ‘0’, ‘checked’ %>非表示</label>&nbsp;|&nbsp;
      <label><%= radio_button_tag :status, ‘1’ %>表示</label>
    </dd>
    <dt>コメントしてください。「テキストエリア」</dt>
    <dd><%= text_area_tag :comment, nil, :style => ‘width:320px;height:120px;’ %></dd>
    <dt>ファイルをアップロードしてください「ファイル」</dt>
    <dd><%= file_field_tag :file_name %></dd>
  </dl>
<% end %>

methodはデフォルトでPOSTなので、特に指定する必要はありません。ファイルをアップロードしない場合は

<% form_tag :controller =>’コントローラ’, :action => ‘アクション’ do %>

でもOKです。text_field_tagの「:hoge」は要素名、「nil」は値。アクション側で受け取るときは

params[‘hoge’]

で受け取れます。

Railsであればform_forが猛烈に便利なのですが、すべてのフォームがモデルとイコールなわけではないので、やっぱりform_tagの出番も増えます。

設計が間違ってるのかなぁ。