noggy’s blog

自分用の備忘録です。。。

Devise.2 新規登録画面

ここでは、新規登録の入力画面を実装する

2.1 Registration(新規登録)

<div class="col-md-4 offset-md-4">

<h2 class="text-center"><%= t('.sign_up') %></h2>
<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %> <!--①--->
  <%= bootstrap_devise_error_messages! %>

  <!--②追加ココから-->
  <div class="form-group">
    <%= f.label :名前 %>
    <%= f.text_field :username, autofocus: true, class: "form-control", placeholder: '50字以内'%>
  </div>
  <!-- 追加ココまで-->

  <div class="form-group">
    <%= f.label :メールアドレス %>
    <%= f.email_field :email, autocomplete: 'email', class: 'form-control' ,placeholder: 'user@example.com(50字以内)' %>
  </div>

  <div class="form-group">
    <%= f.label :パスワード %>
    <%= f.password_field :password, autocomplete: 'current-password', class: 'form-control', placeholder: '半角英数6~50字以内' %>

  <% if false %>--------------------------
    <% if @minimum_password_length %>
      <small class="form-text text-muted"><%= t('devise.shared.minimum_password_length', count: @minimum_password_length) %></small>
    <% end %>
  --------------------------------<% end %>
  </div>

  <div class="form-group">
    <%= f.label :確認用パスワード %>
    <%= f.password_field :password_confirmation, autocomplete: 'current-password', class: 'form-control', placeholder: '上記と同じパスワード' %>
  </div>

  <div class="form-group">
    <%= f.submit t('.sign_up'), class: 'btn btn-primary' %>
  </div>
<% end %>

<%= render 'devise/shared/links' %>

</div>

①:resourceは@userのこと.どのようなModelのインスタンスが来ても大丈夫なようにresourceという抽象化したものを置いている.
Deviseの内部では,それをresourceという名前で参照できるように統一しているとのこと.

asオプションでModelのインスタンスに対して,resource_nameという名前で参照できるようにしている.すなわち,キー:userを指定している.
params[resource_name]で参照できるようになる.

また,urlで指定したregistration_pathに対し,キーのresource_nameを()内に定義し,どのモデルのインスタンスなのかを明らかに,urlを明確にしている.

②:usernameカラムをUserテーブルに追加したので,入力フォームにも名前の入力欄を追加

2,2 deviseの日本語化

日本語になっているのは,次のgem

gem 'devise-i18n'

(このdevise-i18nはdeviseのメッセージなどを日本語にするようだ)と
config/localesの下のja.ymldevise.views.ja.ymlのおかげ

f:id:nogicchi:20210920164535p:plain

2.3 メール本文
メール本文のコード

<p><%= t('.greeting', recipient: @email) %></p>

<p><%= t('.instruction') %></p>

<p><%= link_to t('.action'), confirmation_url(@resource, confirmation_token: @token) %></p>

新規登録画面から登録がうまくいくと次のメールが届くはず

タイトル:メールアドレス確認メール
本文
<mail address>様

以下のリンクをクリックし、メールアドレスの確認手続を完了させてください。

メールアドレスの確認


qiita.com