Deviseを使用している私のレールアプリでは、署名されていないユーザーがルートを訪問すると、ルートパスの代わりに/ users/sign_inにリダイレクトされます。 rootのパスは、ログインしたユーザーとうまく動作します。 rootであるhome_pathとのリンクであるnavbarロゴをクリックすると同じことが起こります。ルートにアクセスしたときと同じように/ users/sign_inにリダイレクトされます。ここに私のルートです:Deviseを使用している私のレールアプリでは、未訪問のユーザーがルートを訪れると、ルートパスの代わりに/ users/sign_inにリダイレクトされますか?
get 'home' => 'static_pages#home', as: "home"
devise_for :users, :controllers => { registrations: 'registrations' }
root 'static_pages#home'
代わりに、ナビゲーションバーテンプレートのhome_path /のroot_pathの/ユーザー/ sign_inに私を取るのリンク:
<a class="navbar-brand" href="<%= home_path %>">Brand</a>
私は、フロントエンドに角度を使用していますので、これは何ですかユーザーの訪問ルートに署名したとき、パスは次のようになります。私は手動でホーム/ホーム#/または/へのURLを変更した場合場合
http://localhost:3000/home#/
私はまだユーザー/ sign_inにリダイレクトしています。
他の情報を含めることはできません。これは私が上書きする必要があるDeviseのデフォルト動作ですか?ドキュメントの自動リダイレクトで何かを見つけることができないようです。助けてくれてありがとう。
アプリケーションコントローラ:
class ApplicationController < ActionController::Base
before_action :authenticate_user!
protect_from_forgery with: :exception
def after_sign_in_path_for(user)
home_path
end
end
static_pagesコントローラ:あなたのApplicationControllerには
class StaticPagesController < ApplicationController
def home
end
end
はあなたのApplicationControllerにおよび/またはStaticPagesControllerを含めることができ非LOGGEDINユーザーが
home
ページにアクセスしてみましょうするためにstatics_controller
にskip_before_action :authenticate_user!
を追加する必要がありますか? – michaeldeverはい質問を更新しました。 – srlrs20020