私はルビーオンレールが新しく、私はcancancaやdeviseのような宝石を使っていません。ユーザがログアウトしなかった場合、プロフィールページにユーザをリダイレクト
ユーザーがログインしているが、ログアウトしていないか、ブラウザを閉じていないとします。このユーザーがログアウトしていないときは、ログインページを表示してアクセスできるという問題があります。私は彼がこのページにいるときに彼をどこかにリダイレクトしたい。ログイン状況を確認する機能があります。
def authenticate_user!
if logged_in?
else
redirect_to root_path, :notice => ''
end
end
class UsersController < ApplicationController
before_action :authenticate_user!
これらの2つのことは、ユーザーがログインしていない場合、ルートページに誘導されることを保証します。私が入れようとしていた
def authenticate_user!
if logged_in?
redirect_to current_user
else
redirect_to root_path, :notice => ''
end
end
レールが私に投げていると、彼はユーザーを知らなかったと不平を言った。しかし、同じヘルパーでcurrent_userも定義しました。
def current_user
@current_user ||= User.find_by(id: session[:user_id])
end
誰かが助けますか?ありがとうございました
更新: 問題が解決しました: 私は私のケースで2つのコントローラを持っているので、ルートで永遠のループを避けるために、私は関数を分けました。ログインしていないことを確認し、ユーザコントローラのルートを設定します。ログインしていない場合、ページはログインコントローラに移動します。ログインしている場合、コントローラとルートにログにログインチェック。
def authenticate_user!
if !logged_in?
redirect_to root_path, :notice => ''
end
end
def authenticate!
if logged_in?
redirect_to current_user
end
end
ページが正しくリダイレクトされていないため、レールが私に与えるものです。私のURLは、ユーザー/ 16にいると指定していますが、どういうわけか私は直接それを得る権限がありません。 – user3431800
あなたのコントローラにユーザーショーアクションがありますか?あなたのルートは正しく設定されていますか?コードを投稿した場合、私たちはそれを見ることができます – Andy
私はかなり私のルートが正しいと確信しています。リソース:ユーザーはすべてのルートを実行するためにレールによって使用されます。もし私がその行を下に置くと、ユーザーはログインページにまだアクセスできます。 – user3431800