2011-06-22 114 views
2

我将如何在我的Rails应用程序中设置,以便如果第一次用户访问我的网站www.example.com,他们会看到他们可以登录的页面,但是如果已经登录到www.example.com它现在显示他们自己的帖子,但仍然在同一个www.example.com网址。如何为已登录的用户和未登录的用户设置主页?

我会做类似于基于渲染模板的东西吗?如果他们已经登录或者有其他方法可以做到这一点?

回答

3

您可以设置用户#家是根网址:

UsersController:

def home 
    if logged_in? 
    @blogs = current_user.blogs 
    render :action => 'logged_in' 
    else 
    render :action => 'non_logged_in' 
    end 
end 

有2个文件在app /视图/用户文件夹: logged_in.html.erb & non_logged_in .html.erb

0

这取决于你如何让你的日志中的逻辑

通常你应该有两个动作,一个是豪我/登录表单和用户登录回家。您可以在应用程序控制器上创建before_filter,以便您可以测试用户是否已登录,如果没有,则将其重定向到主页(注销)。

如果您没有使用自己的代码或其他解决方案,我想向您推荐这款名为的宝石,它本身实现了很多登录逻辑,并且很容易更改。

编辑:我觉得这个方案比进行了介绍和我没有把代码(虽然它是before_filter链接完全相同的代码),其他人更好,所以在这里它是:

class ApplicationController < ActionController::Base 
    before_filter :require_login 

    private 

    def require_login 
    unless logged_in? 
     flash[:error] = "You must be logged in to access this section" 
     render :controller => 'home', :action => 'not_logged_in' 
    else 
     # whatever code you need to load from user 
     render :controller => 'home', :action => 'logged_in' 
    end 
    end 

end 

此解决方案完美地工作,因为它测试用户是否登录他试图访问的控制器/操作。

+0

感谢这和我正在调查设计 – Kevin

1

Steve Richert写了一篇很棒的文章。当定义路线时,他正在使用advanced constraintsee here

+0

感谢这篇文章其实很有趣。该博客看起来非常棒,感谢资源。 – Kevin

相关问题