会員ユーザーの登路機能を実装していきたいと思います。
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 end end |
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
| <! DOCTYPE html> < html > < head > < title >BasicWebsite</ title > < meta name = "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| %> < div class="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 :users resources :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]) end end |
ユーザー情報を表示する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) %> < div class = "row" > < aside class = "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 件のコメント:
コメントを投稿