更新日:
【Rails】 form_tagの使い方を習得しよう
form_tagとは、railsで情報を送信するためのヘルパーメソッドです。form_tagを使うことにより、簡単に入力フォームに必要なHTMLを作成することができます。
1
2
<%= form_tag('パス', 'オプション') do %>
<% end %>
form_tagの基礎情報
この章では、form_tagの基本的な使い方について解説します。
form_tagの使い方
form_tag
を使用する時には下記のように記述します。
1
2
<%= form_tag('パス', 'オプション') do %>
<% end %>
オプションにはhttpメソッドなどを指定できます。
デフォルトだとhttpメソッドはgetになります。
実際の例は下記のようになります。
1
2
3
4
<%= form_tag('/main', method: :post) do %>
<input type="text" name="nickname">
<input type="submit">
<% end %>
実際に表示されるコードはこのように変換されます。
1
2
3
4
5
6
<form action="/main" accept-charset="UTF-8" method="post">
<input name="utf8" type="hidden" value="✓" />
<input type="hidden" name="authenticity_token" value="※ここにはトークンが入ります" />
<input type="text" name="nickname">
<input type="submit">
</form>
このように文字コードと不正な情報が投稿されるのを防ぐためトークンが自動で作成されているのが確認できます。
ですのでrailsでフォームを作成する際はこのようなform系のヘルパーメソッドを使用して作成します。
form_tagの引数にはパスとhttpメソッドなどのオプションを指定します。
ここに書くべき記述はどのように調べたら良いでしょうか?
newアクションは投稿フォームを表示するアクションです。
投稿された内容はデータベースに保存したいですよね。
ということは次に動かすべきアクションは何になるでしょうか?
そうですね、createアクションで投稿した内容をデータベースに保存したいですね。
ということはパスとhttpメソッドはmainコントローラーのcreateアクションを動かすよう指定してあげれば良さそうです。
rails routesコマンド
で調べてみましょう。
1
POST /main(.:format) main#create
上のように書いてあるのが確認できると思います。
そうするとパスは/main
、httpメソッドはPOST
であることがわかります。
なので上のように<%= form_tag('/main', method: :post) do %>
と書くということになります。
アクション名で記述してみよう
form_tagですがパスとhttpメソッドで次に動かすアクションを指定できましたが、直接コントローラー名とアクション名を指定することもできます。
1
2
3
4
<%= form_tag({controller: :main, action: :create}, { method: :post}) do %>
<input type="text" id="name">
<input type="submit">
<% end %>
form_tagでのスタイルの当て方
form_tagでcssのclassを設定する場合は下記のように記述します。
1
2
3
4
<%= form_tag('/main', method: :post, class: "hoge") do %>
<input type="text" id="name">
<input type="submit">
<% end %>
form_forとform_tagの違い
railsにはform_tagの他にform_forといったヘルパーメソッドも用意されています。
一般的に投稿フォームで投稿した内容が保存されるデータベースが存在する時にはform_for
を使い、検索フォームなど投稿フォームに入力した内容が保存されない場合はform_tag
を使用します。
詳しくは、form_forの使い方を参考にしてください。
また、rails5.1から追加されたフォームを作成するためのヘルパーメソッドのform_withも合わせてチェックしましょう。こちらの書籍でも、Ruby on Railsの基礎から実際に開発現場に必要な知識まで幅広く学ぶことができます。
この記事のまとめ
- form_tagは、簡単に入力フォームを作成することが出来るヘルパーメソッドのこと
- 主に検索時などデータを特定のアクションに送りたい時に使う
- form_tagを使うと、文字コードと不正な情報が投稿されるのを防ぐためトークンが自動で作成される