ぞえの技術めも

Ruby on Rails勉強中

【58日目】【1日20分のRailsチュートリアル】【第7章】ユーザー登録用のフォームを作成する

Ruby on Railsチュートリアル(第3版)

今日は「7.2.1 form_forを使用するから。

7.2.1 form_forを使用する

ユーザー登録ページで重要な点は、ユーザー登録に欠かせない情報を入力するためのformです。

formタグのことですね。

これを行うには、Railsでform_forヘルパーメソッドを使用します。

メソッドで簡単に作れるのかな。

まずnewアクションに@user変数を追加する。

app/controllers/users_controller.rb

  def new
    @user = User.new
  end

ビューにフォームを追加してCSSで見た目整える。

app/views/users/new.html.erb

<% provide(:title, 'Sign up') %>
<h1>Sign up</h1>

<div class="row">
  <div class="col-md-6 col-md-offset-3">
    <%= form_for(@user) 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>

app/assets/stylesheets/custom.css.scss

  :
/* forms */

input, textarea, select, .uneditable-input {
  border: 1px solid #bbb;
  width: 100%;
  margin-bottom: 15px;
  @include box_sizing;
}

input {
  height: auto !important;
}

ユーザー登録ページの見た目確認してみよう。

サーバーを起動して

$ rails server -b $IP -p $PORT

<ローカルアドレス>/signupにアクセス。

f:id:kt_zoe:20161024122400p:plain

おー、ユーザー登録ページだ!

7.2.2 フォームHTML

リスト7.13で定義したフォームを理解するために、小さなコードに分けて考えてみましょう。
まずは、埋め込みRubyが使われているform_forからendまでの外側の構造を読み解いていきます。

form_forメソッドからどう<form>タグが生成されるのかを一つ一つ解説。

ユーザー作成の場合、どうしてaction="/users"を設定するのかが気になる。これについてはまたこの項以降で説明あるそう。

次は「7.3 ユーザー登録失敗」から。