Rails: form_tag まとめ
まとめ
form_tag まとめ
- デフォルトでは現在のページにPOSTするフォームを生成
- 文字エンコーディングとCSRF対策の為の<div>要素を生成
- CSRF対策はGET以外のとき
- 引数を2つとる。
- 第1引数はリクエストを受けるアクションのパスを指定(文字列・ハッシュ)
- 第2引数はメソッドや要素のクラス等のオプションを指定する。(ハッシュ)
- ハッシュが2つの場合、中括弧を用いて明示する必要がある。
- 検索フォームを作成するばあい、HTTPメソッドには"GET"を指定
例:
引数なし(現在のページが/home/index
の場合)
<%= form_tag do %> Form contents <% end %>
↓
formタグのaction="/home/index"
に注目
<form accept-charset="UTF-8" action="/home/index" method="post"> <div style="margin:0;padding:0"> <input name="utf8" type="hidden" value="✓" /> <input name="authenticity_token" type="hidden" value="f755bb0ed134b76c432144748a6d4b7a7ddf2b71" /> </div> Form contents </form>
引数の指定
文字列とハッシュ
<%= form_tag("/search", method: "get") do %> # => '<form accept-charset="UTF-8" action="/search" method="get">'
ハッシュ2つ
# 失敗例(1つのハッシュとして認識されてしまう) form_tag(controller: "people", action: "search", method: "get", class: "nifty_form") # => '<form accept-charset="UTF-8" action="/people/search?method=get&class=nifty_form" method="post">'
# 成功例(ハッシュが2つのとき、最初または両方のハッシュに中括弧をつける) form_tag({controller: "people", action: "search"}, method: "get", class: "nifty_form") # => '<form accept-charset="UTF-8" action="/people/search" method="get" class="nifty_form">'
リンク
- 詳しくは: Form Helpers — Ruby on Rails Guides
- HTML formについて: <form>-HTML5タグリファレンス
- "フォームヘルパー" - 記事一覧 - tkymtk's blog