現在、自作アプリを作成中にエラーが出てしまい、解決方法を調査中・試行中ですがなかなか解決しないため、解決方法、もしくは原因だけでもご教示いただけないかと思い、質問させていただきます。
Ruby on Railsにてdevise導入の上、カスタマイズとして、ユーザ情報の詳細画面を作成しました。(show.html.erb)
■事象:
ユーザ情報詳細画面自体は正常に表示することができましたが、
deviseで作成されたログイン画面へのリンクをクリックすると、下記のエラーが出てしまいました。
<ログイン画面へのリンク>(views/shared/_header.html.erb)
下記の「ログイン」のリンク(new_user_session_path)をクリックしました。
ruby
1<header class="app-title navbar navbar-expand-md navbar-light text-white"> 2<nav> 3 <div class="loginstauts"> 4 <% if user_signed_in? %> 5 <strong><%= current_user.username %></strong>でログインしています。 6 <%= link_to 'プロフィール変更', edit_user_registration_path %> | 7 <%= link_to "ログアウト", destroy_user_session_path %> 8 <% else %> 9 <%= link_to "ユーザ登録", new_user_registration_path %> | 10 <%= link_to "ログイン", new_user_session_path %> 11 <% end %> 12 | <%= link_to "投稿一覧", posts_path %> 13 </div> 14</nav> 15</header>
<コントローラ>(controllers/users_controller.rb)
ruby
1class UsersController < ApplicationController 2 skip_before_action :authenticate_user! 3 def show 4 @user = User.find_by(params[:id]) 5 end 6end
(controllers/users/sessions_controller.rb)
ruby
1class Users::SessionsController < Devise::SessionsController 2 before_action :configure_sign_in_params, only: [:create] 3 skip_before_action :authenticate_user! 4 5 protected 6 7 def configure_sign_in_params 8 devise_parameter_sanitizer.permit(:sign_in, keys: [:user_id]) 9 end 10end 11
<ルーティング>
ruby
1Rails.application.routes.draw do 2 root 'home#index' 3 resources :posts 4 resources :users, only: [:show] 5 6 devise_for :users, :controllers => { 7 :registrations => 'users/registrations', 8 :sessions => 'users/sessions' 9 } 10end
rails routesでUser関連のルーティングを確認した結果は以下です。
■わかっていること:
エラーの原因としては、上記ルーティングに「GET /users/:id」があるので、
「/users/sign_in」というパスに遷移しようとすると、"sign_in"の部分が[:id]だと認識され、id="sign_in"のユーザを探してしまっていることまでは理解できました。
しかし、以下のQiita記事などでは、上記の問題は起きていないので、
ユーザ詳細画面の作成にあたり、何か追加の考慮がいるというのは想定外でした。
Railsのdeviseでマイページの作成
devise導入からユーザーのプロフィール画面を作成するまで
試行錯誤中ではありますが、
あまり我流で色々試すとdeviseの良さを消してしまうのではないかと懸念し、
並行して皆様の知見をご参考にしたい次第です。
お手数をおかけしますが、追記すべき事項があればご教示いただけますと幸いです。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/21 23:35
2020/04/21 23:55
2020/04/22 04:00