0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

基本的な検索フォームヘルパまとめ

Posted at

参考:Railsガイド 感謝です。

https://railsguides.jp/form_helpers.html

1 基本的なフォームを作成する

名前
form_tag
<%= form_tag do %>
  Form contents
<% end %>

form_tagは、上のように引数なしで呼び出されると

タグを生成します。このフォームを指定のページに送信するときにはHTTPのPOSTメソッドが使われます。たとえば現在のページが/home/indexの場合、以下のようなHTMLが生成されます (読みやすくするため改行を追加してあります)。
<form accept-charset="UTF-8" action="/home/index" method="post">
  <div style="margin:0;padding:0">
    <input name="utf8" type="hidden" value="&#x2713;" />
    <input name="authenticity_token" type="hidden" value="f755bb0ed134b76c432144748a6d4b7a7ddf2b71" />
  </div>
  Form contents
</form>

1.divタグは省略不可
上のフォームにはivタグに囲まれた中に、2つの隠しinput要素が置かれています。このdivタグがないとフォームを正常に送信できないため、**divタグは省略できません。**最初の隠しinput要素であるutf8は、フォームで指定の文字エンコーディングをブラウザに強制します。これはアクションがGETとPOSTのどちらであってもすべてのフォームで生成。

2.authenticity_tokenはGET以外のすべてのフォームで生成
2番目の隠しinput要素であるauthenticity_token要素は クロスサイトリクエストフォージェリへの保護のためのセキュリティ機能。この要素はGET以外のすべてのフォームで生成されます(セキュリティ機能が有効になっている場合)。

一般的な検索フォーム

検索フォーム 働き
form_tag GETメソッドを送信するためのフォーム要素
label_tag 入力するものを示すラベル
text_field_tag テキスト入力要素
submit_tag 「送信」ボタン要素
<%= form_tag("/search", method: "get") do %>
  <%= label_tag(:q, "Search for:") %>
  <%= text_field_tag(:q) %>
  <%= submit_tag("Search") %>
<% end %>

上のコードから以下のHTMLが生成されます。

<form accept-charset="UTF-8" action="/search" method="get"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /></div>
  <label for="q">Search for:</label>
  <input id="q" name="q" type="text" />
  <input name="commit" type="submit" value="Search" />
</form>

どのフォームinputでも、id属性はinputのnameから生成。(上の例では「q」)。これらのidは、cssでのスタイル追加やJavaScriptによるフォーム制御で使うのに便利。

HTMLのすべてのフォームコントロールには、text_field_tagやsubmit_tagと同様の便利なヘルパーが用意されています。

フォームを検索に使う場合は必ずGETメソッドを利用。こうすることで検索クエリがURLの一部となり、ユーザーが検索結果をブックマークしておけば、後でブックマークから同じ検索を実行できます。Railsでは基本的に、常にアクションに対応する適切なHTTPverbを選びます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?