- 更新日: 2016年11月22日
- Devise
Devise で作成した User モデル用のコントローラーの index, show アクションを追加
Devise で devise_for メソッドによるルーティングを確認 | EasyRamble で確認したとおり、Devise で User モデルを作成した場合、対応する Users コントローラーの index, show 用のルーティングは作成されません。
users#index → ルーティングなし
users#show → ルーティングなし
となります。ですので、users#index, users#show に対応するルーティングを設定し、コントローラー・ビューも作成します。
— 環境 —
rails 5.0.0.1
devise 4.2.0
【追記 2016/11/22】
Rails 5 + Devise 4 の環境でも同様の手順で実装できます。
【追記ここまで】
— 記事初回公開時の環境 —
Rails 4.0.1
Devise 3.2.2
users#index, users#show 用のルーティングを設定
config/routes.rb に users#index, users#show アクション用のルーティングを追加します。注意点としては、devise_for の後に追加すること。前に追加すると不具合が起こる。
config/routes.rb
1 2 3 4 5 6 7 8 9 10 11 |
Railsapp::Application.routes.draw do root 'home#index' devise_for :users, :controllers => { :sessions => "users/sessions", :registrations => "users/registrations", :passwords => "users/passwords", :omniauth_callbacks => "users/omniauth_callbacks" } resources :users, :only => [:index, :show] # ・・・ end |
ルーティング確認。users#index, users#show のルーティングが追加されました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
$ bundle exec rake routes Prefix Verb URI Pattern Controller#Action root GET / home#index new_user_session GET /users/sign_in(.:format) users/sessions#new user_session POST /users/sign_in(.:format) users/sessions#create destroy_user_session DELETE /users/sign_out(.:format) users/sessions#destroy user_omniauth_authorize GET|POST /users/auth/:provider(.:format) users/omniauth_callbacks#passthru {:provider=>/facebook|twitter/} user_omniauth_callback GET|POST /users/auth/:action/callback(.:format) users/omniauth_callbacks#(?-mix:facebook|twitter) user_password POST /users/password(.:format) users/passwords#create new_user_password GET /users/password/new(.:format) users/passwords#new edit_user_password GET /users/password/edit(.:format) users/passwords#edit PATCH /users/password(.:format) users/passwords#update PUT /users/password(.:format) users/passwords#update cancel_user_registration GET /users/cancel(.:format) users/registrations#cancel user_registration POST /users(.:format) users/registrations#create new_user_registration GET /users/sign_up(.:format) users/registrations#new edit_user_registration GET /users/edit(.:format) users/registrations#edit PATCH /users(.:format) users/registrations#update PUT /users(.:format) users/registrations#update DELETE /users(.:format) users/registrations#destroy users GET /users(.:format) users#index user GET /users/:id(.:format) users#show |
Users コントローラーを index, show アクションとともに作成
1 2 3 |
$ bundle exec rails generate controller Users index show --no-test-framework |
適当にコントローラーを作成。
app/controllers/users_controller.rb
1 2 3 4 5 6 7 8 9 |
class UsersController < ApplicationController def index @users = User.all end def show @user = User.find(params[:id]) end end |
users#index, users#show 用のビューを作成
ビューも適当に作成。
app/views/users/index.html.erb
1 2 3 4 5 6 7 8 9 10 |
<% provide(:title, 'All users') %> <h1>All users</h1> <ul class="users"> <% @users.each do |user| %> <li> <%= link_to user.name, user %> </li> <% end %> </ul> |
app/views/users/show.html.erb
1 2 |
<% provide(:title, @user.name) %> <h1>My page (<%= @user.name %>)</h1> |
これで、/users, /users/1 などのURLにアクセスして、ユーザー一覧およびユーザー詳細のページを表示できます。
- Devise の関連記事
- RailsのDevise認証機能での実装チェックリストまとめ
- Deviseで送信されるメールのfrom(送信者メールアドレス)を変更
- Facebook の OAuth 認証で OAuthException(191)エラー
- Rails Devise でパスワードリセットなどのメールテンプレート(Mailer ビュー)をカスタマイズ
- Rails + Devise 環境でのフレンドリーフォワーディング機能を修正
- Deviseでユーザー登録完了時にウェルカムメールを送信する
- Rails Devise でユーザーがプロフィール情報を更新後に元のページにリダイレクトさせる
- Devise でユーザーがパスワードなしでアカウント情報を変更するのを許可
- Rails Deviseの日本語化辞書ファイル(devise.ja.yml)
- Rails + Devise で admin ユーザー(管理者)を削除できないようにする
- 初回公開日: 2013年12月20日
Leave Your Message!