会員ユーザーの登路機能を実装していきたいと思います。
Railsのdeviseという機能を使って実装を行います。
Railsのdeviseという機能を使って実装を行います。
1.deviseをGemfileに追加
| 
1 | gem 'devise' | 
$ bundle install
2.Railsプロジェクトにdevise関連ファイルを追加
$ rails generate devise:install
 
このコマンドにより、5つの初期設定に関するメッセージが表示。
・メール送信時のホスト名を指定(今回は抜粋)
・rootのURL指定(設定済み)
・flashメッセージの表示領域(後に設置します。)
・Rails3.2だけ必要なのでスキップ
・Viewのカスタマイズ
・rootのURL指定(設定済み)
・flashメッセージの表示領域(後に設置します。)
・Rails3.2だけ必要なのでスキップ
・Viewのカスタマイズ
今回はViewをカスタマイズしたいと思いますので、コマンドを使います。
$ rails g devise:views
ご紹介するのはBootstrapによるflashメッセージの装飾です。
app/helpers/application_helper.rb
app/helpers/application_helper.rb
| 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 | module ApplicationHelper    def bootstrap_class_for(flash_type)        case flash_type            when :success            "alert-success"            when :error            "alert-danger"            when :alert            "alert-warning"            when :notice            "alert-info"            else            flash_type.to_s        end    endend | 
flashメッセージを全体にわたって表示
app/views/layouts/application.html.erb
app/views/layouts/application.html.erb
| 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 | <!DOCTYPEhtml><html><head>  <title>BasicWebsite</title>  <metaname="viewport"content="width=device-width,user-scalable=no,maximum-scale=1"/>  <%= stylesheet_link_tag    "application", media: "all", "data-turbolinks-track" => true %>  <%= javascript_include_tag "application", "data-turbolinks-track" => true %>  <%= csrf_meta_tags %></head><body><%= render 'shared/navbar' %><% flash.each do |key, value| %><divclass="alert <%= bootstrap_class_for(key) %>"><%= value %></div><% end %><%= yield %></body></html> | 
3.deviseでユーザーモデルを作成
$ rails g devise user
$ rake db:migrate
nameとemailという2つの情報をもったユーザーモデルを作成しているので
nameという情報を追加するためのマイグレーションを作成
nameという情報を追加するためのマイグレーションを作成
$ rails generate migration add_name_to_users name:string
$ rake db:migrate
4.入力値の値を設定するユーザー検証を行う
app/models/user.rb
| 
1 | validates :name,  presence: true, length: { maximum: 50 } | 
を挿入する。
5.ユーザーの情報を表示するページを作成
$ rails generate controller Users show
config/routes.rb
| 
1 
2 
3 | devise_for  :usersresources :users, only: [:show]root 'pages#home' | 
app/controllers/users_controller.rb
| 
1 
2 
3 
4 
5 
6 | class UsersController < ApplicationController  def show    @user = User.find(params[:id])  endend | 
ユーザー情報を表示するview
app/views/users/show.html.erb
app/views/users/show.html.erb
| 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 | <% provide(:title, @user.name) %><divclass="row">  <asideclass="col-md-4">    <section>      <h1>        <%= @user.name %>      </h1>    </section>  </aside></div> | 
ここまでで、実際にページ作成が行われているか確認
$ rake db:migrate RAILS_ENV=production
$ bundle exec rake assets:precompile RAILS_ENV=production
$ sudo service httpd restart
http://*****/users/sign_up
(*****)はお使いの独自ドメイン。
(*****)はお使いの独自ドメイン。
これで完了です。
 
0 件のコメント:
コメントを投稿