
部分テンプレートは、他の画面から共通処理として呼び出されるテンプレートになります。
部分テンプレート(app/views/users/_form.html.erb)
new.html.erbから共通の部分テンプレートとして呼び出されているファイルになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<%= form_with(model: user, local: true) do |form| %> <% if user.errors.any? %> <div id="error_explanation"> <h2><%= pluralize(user.errors.count, "error") %> prohibited this user from being saved:</h2> <ul> <% user.errors.full_messages.each do |message| %> <li><%= message %></li> <% end %> </ul> </div> <% end %> <div class="field"> <%= form.label :name %> <%= form.text_area :name %> </div> <div class="actions"> <%= form.submit %> </div> <% end %> |
form_withビューヘルパー(<%= form_with(model: user, local: true) do |form| %> ~ <% end %>)
引数の形式によって様々なformタグを出力するヘルパーメソッドです。
ヘルパーメソッドとは、ビューやコントローラで共通して呼び出されるメソッドのことです。
構文
1 2 3 |
<%= form_with(model: モデルクラスのインスタンス, local: 真偽値) do |form| %> 表示するフォームの内容 <% end %> |
今回の場合はモデルクラスのインスタンスにuserが指定されているので、userモデルクラスの値をフォームの内容に使用することができます。
local:真偽値
Ajaxによるデータ更新を許可するかどうかの設定になります。
真偽値 | 説明 |
---|---|
true | Ajaxによるデータ更新を許可する必要がない場合に指定する。 |
false | Ajaxによるデータ更新を許可する必要がある場合に指定する。 |
Ajaxについては、下記の記事で解説していますので、合わせてご覧下さい。
画面に出力されるHTML
下記のHTMLが出力されます。
1 2 3 4 5 |
<form action="/users" accept-charset="UTF-8" method="post"> <input name="utf8" type="hidden" value="✓" /> <input type="hidden" name="authenticity_token" value="Q7XS5s0p+B5fz9JkDZvOxWwzRtu5J5q3jBQXYaaQHOMLczS56uCvn1a97mU8gOv2l9PdP3jaK58ATFc+mvVVzg==" /> … </form> |
「<input type=”hidden” name=”authenticity_token”…」から始まるinputタグは、CSRF(クロスサイトリクエストフォージェリ)という不正アクセス対策に使用されるタグのことです。
labelビューヘルパー(<%= form.label :name %>)
構文
1 |
<%= form.label フィールド名 %> |
フィールド名
モデルクラスのインスタンスのフィールド名のことです。
出力されるHTML
1 |
<label for="user_name">Name</label> |
for属性で指定されている値は、その後に生成されるテキストエリア等の値と同じになります。
text_areaビューヘルパー(<%= form.text_area :name %>)
構文
1 |
<%= form.text_area 引数,属性名1:値1 %> |
登録画面に、「textareaタグ」を出力します。任意ですが、出力されるtextareaタグに属性を増やしたい場合は、カンマ区切りで指定します。
出力されるHTML
1 2 |
<textarea name="user[name]" id="user_name"> </textarea> |
name属性には、「オブジェクト名[カラム名]」のような配列が出力されています。
submitビューヘルパー(<%= form.submit %>)
構文
1 |
<%= form.submit %> |
登録画面にサブミットボタンを出力します。
出力されるHTML
1 |
<input type="submit" name="commit" value="Create User" data-disable-with="Create User" /> |
data-disable-with属性は、二重クリック防止対策のための属性です。
この記事へのコメントはありません。