2016-05-21 9 views
1

signed_inユーザーのroot_pathdashboardとなり、ユーザーがサインインしていないユーザーはindexになります。Rails Devise - サインインしたユーザーと匿名ユーザーのルートパスを個別に定義する

私はDeviseを使用しており、助手user_signed_in?があることを知っていますが、この目的のためにどのように使用するのか分かりません。

この作品を作成するにはどうすればよいですか?これは、再発根認証されたユーザーのための工夫が提供するメカニズムです

unauthenticated :user do 
    root :to => 'main#index' 
end 

authenticated :user do 
    # Rails 3 syntax 
    # root :to => "main#dashboard" 
    # Rails 4 requires the 'as' option to give it a unique name 
    root :to => "main#dashboard", :as => "authenticated_root" 
end 

答えて

2

あなたはこれを使用することができます。

root :to => 'main#index'行は、アプリケーションが最初に作成されるときに、config/routes.rbにRailsが配置する標準行です。あなたはそれがログインしていないユーザーにも適用されることを確実にするためにunauthenticated :user do .. endブロックでそれをラップすることができます。

これは、彼らがログインしているかどうかに基づいて、すべてのユーザーに対して決定的なルートルーティングを提供します。

+0

訪問者が 'index'にどのようにルーティングされるのか正確に教えてください。おそらく '認証された'ブロックの外にルートディレクティブがありますか? – rdupz

1

することができますアプリケーション・コントローラ(application_controller.rb

protected 
def authenticate_user! 
if user_signed_in? 
    # navigate the user to dashboard 
else 
    # redirect to index 
end 

に以下この方法は、次いで、before_filter 例を用いて、他のコントローラ(複数可)から呼び出すことができるか:

class SomeController < ApplicationController 
    before_filter :authenticate_user! 
end 
関連する問題