質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

813閲覧

ruby on rails 会員登録後の表示でエラー(logged_in?が適用されない)

kousuke24

総合スコア29

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2019/08/21 05:15

現在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”を消すとエラーは消えますが、ナビゲーションバーの表示がログインしていない状態の表示になってしまいます。恐縮ですがこ教授いただければ幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ruby

1redirect_to login_url

login_urlが存在していません。

ruby

1redirect_to new_session_url

の間違いでは?(そのままコピペしたとか)

投稿2019/08/21 05:24

Mugheart

総合スコア2344

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kousuke24

2019/08/21 05:43

治りました! ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問