現在ruby on railsでWebアプリケーションを作成しています。
会員登録機能を作成し、登録後のナビゲーションバー表示を登録前とは違う表示に設定したのですが、エラーが起こってしまい詰まっています。
エラー内容
NameError in UsersController#show undefined local variable or method `login_url' for #<UsersController:0x00007fbb5628fd98>
エラー箇所(太字の部分)
class ApplicationController < ActionController::Base include SessionsHelper private def require_user_logged_in unless logged_in? **redirect_to login_url** end end end
ルーティング
Rails.application.routes.draw do root to: 'toppages#index' resources :sessions, only: [:new, :create, :destroy] resources :users, only: [:index, :show, :new, :create] resources :novels, only: [:create, :destroy] end
コントローラー
class UsersController < ApplicationController before_action :require_user_logged_in, only: [:index, :show] def index @users = User.order(id: :desc).page(params[:page]).per(25) end def show @user = User.find(params[:id]) end def new @user = User.new end def create @user = User.new(user_params) if @user.save flash[:success] = '登録が成功しました' redirect_to @user else flash.now[:danger] = '登録に失敗しました' render :new end end private def user_params params.require(:user).permit(:name, :email, :password, :password_confirmation) end end
ナビゲーションバー
<header class="mb-4"> <nav class="navbar navbar-expand-sm navbar-dark bg-info"> <a class="navbar-brand" href="/">ShortNovel</a> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse justify-content-end" id="navbarSupportedContent"> <ul class="navbar-nav"> <% if logged_in? %> <li class="nav-item"> <%= link_to 'アカウント', users_path, class: 'nav-link' %></li> <%= current_user.name %> <%= link_to 'プロフィール', user_path(current_user) %> <%= link_to 'ログアウト',session_path(current_user), method: :delete %> <% else %> <li class="nav-item"> <%= link_to '会員登録', new_user_path, class: 'nav-link' %></li> <li class="nav-item"> <%= link_to 'ログイン', new_session_path, class: 'nav-link' %></li> <% end %> </ul> </div> </nav> </header>
UsersControllerの「before_action :require_user_logged_in, only: [:index, :show」で”:show”を消すとエラーは消えますが、ナビゲーションバーの表示がログインしていない状態の表示になってしまいます。恐縮ですがこ教授いただければ幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/21 05:43