7.2 ユーザー登録フォーム
- ユーザー登録フォームを作成する。
7.2.1 form_withを使用する
- Railsでform_withヘルパーメソッドを使う。
class UsersController < ApplicationController
def show
@user = User.find(params[:id])
end
def new
#Userインスタンスを作成し、@userに代入せよ
@user = User.new
end
end
<% provide(:title, 'Sign up') %>
<h1>Sign up</h1>
<div class="row">
<div class="col-md-6 col-md-offset-3">
<%= form_with(model: @user, local: true) do |f| %>
<%= f.label :name %>
<%= f.text_field :name %>
<%= f.label :email %>
<%= f.email_field :email %>
<%= f.label :password %>
<%= f.password_field :password %>
<%= f.label :password_confirmation, "Confirmation" %>
<%= f.password_field :password_confirmation %>
<%= f.submit "Create my account", class: "btn btn-primary" %>
<% end %>
</div>
</div>
演習 1
試しに、ブロックの変数fをすべてfoobarに置き換えてみて、結果が変わらないことを確認してみてください。確かに結果は変わりませんが、変数名をfoobarとするのはあまり良い変更ではなさそうですね。その理由について考えてみてください。
f.labelのfはformを示しており、それをfoobarにしてしまうと、意味がわからなくなってしまう。
また、foobarは意味の無い単語のためこの場合は適さない。
7.2.2 フォームHTML
<%= form_with(model: @user, local: true) do |f| %>
.
.
.
<% end %>
XHR request って?
JavaScriptなどのウェブブラウザ搭載のスクリプト言語でサーバとのHTTP通信を行うための、組み込みオブジェクト(API)である。Google マップ、Facebookなどが利用している。
参考: XMLHttpRequest - ウィキペディア(Wikipedia)
API って?
Application Programming Interfaceの頭文字。
APIとはソフトウェアやアプリケーションなどの一部を外部に向けて公開することにより、第三者が開発したソフトウェアと機能を共有できるようにしてくれるもの。
参考: データの時間
<%= f.label :name %>
<%= f.text_field :name %>
# @userの属性を設定するために特別に設計されたHTMLを返す
<label for="user_name">Name</label>
<input id="user_name" name="user[name]" type="text" />
ユーザーの作成で重要なこと
-
inputごとにある特殊なname属性 -
formタグ自身
# /users(action="/users")に対してHTTPのPOSTリクエスト(method="post")を送信せよ
<form action="/users" class="new_user" id="new_user" method="post">
演習 1
『Web基礎編: HTML』ではHTMLをすべて手動で書き起こしていますが、なぜformタグを使わなかったのでしょうか? 理由を考えてみてください。
formタグを使わなかった理由は『Web基礎編: HTML』において使う必要がなかったから?
formタグは入力・送信フォームを作成するために使われるので、この機能を実装しない『Web基礎編: HTML』では、そもそも必要がないので使わなかった?
(本文が有料のため確認できておりませんが)