2012-02-18 121 views
11

我想为Rails中的用户显示不同的根页面。登录用户的不同页面以及登录用户的根目录

我定义根:

root :to => 'welcome#index' 

和欢迎控制:

class WelcomeController < ApplicationController 
    before_filter :authenticate_user! 

    def index 
    end 

end 

目前它是确定为已登录的用户,但在重定向到/用户用户未登录/ sign_in

我想显示静态根页面,而不是重定向。

+1

删除您的before_filter,并添加您的逻辑到索引方法来确定显示基于它们是否在登录你在使用设计? – 2012-02-18 07:49:21

+0

@MarcTalbot是的,是否有可能在routes.rb中实现? – 2012-02-18 07:51:02

+1

这个确切的问题已经在这里得到解答http://stackoverflow.com/questions/8888289/rails-3-w-devise-how-to-set-two-separate-homepages-based-on-whether-the-user- i/8888513#8888513 – 2012-02-18 08:09:01

回答

2

这个答案应该可以工作。这是张贴在页面布拉德利链接。

将其放入您的欢迎使用控制器中。

def index 
    if authenticate_user? 
    redirect_to :controller=>'dashboard', :action => 'index' 
    else 
    redirect_to '/public/example_html_file.html' 
    end 
end 
2

在你routes.rb

authenticated do 
    root :to => 'welcome#index' 
end 

root :to => 'home#static_page' 

这将确保root_url所有身份验证的用户是welcome#index

供您参考:https://github.com/plataformatec/devise/pull/1147

+0

这不再适用于Rails 4,请尝试:通过身份验证:用户做到 root至:'dashboard#index',如::authenticated_root end root to:'landing_page#index',as :: public_root – ardochhigh 2015-11-10 10:40:09

23

答案,通过普尼特戈亚尔建议将不适用于Rails 4.请参阅this。该解决方案是使用的别名两条路线是这样的一个:

authenticated do 
    root :to => 'welcome#index', as: :authenticated 
end 

root :to => 'home#static_page' 
+1

Jose Valim在设计问题[这里]讨论这个解决方案(https://github.com/plataformatec/devise/issues/2393#issuecomment-17298414) – 2015-05-15 15:39:16

相关问题