我将如何在我的Rails应用程序中设置,以便如果第一次用户访问我的网站www.example.com,他们会看到他们可以登录的页面,但是如果已经登录到www.example.com它现在显示他们自己的帖子,但仍然在同一个www.example.com网址。如何为已登录的用户和未登录的用户设置主页?
我会做类似于基于渲染模板的东西吗?如果他们已经登录或者有其他方法可以做到这一点?
我将如何在我的Rails应用程序中设置,以便如果第一次用户访问我的网站www.example.com,他们会看到他们可以登录的页面,但是如果已经登录到www.example.com它现在显示他们自己的帖子,但仍然在同一个www.example.com网址。如何为已登录的用户和未登录的用户设置主页?
我会做类似于基于渲染模板的东西吗?如果他们已经登录或者有其他方法可以做到这一点?
您可以设置用户#家是根网址:
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
这取决于你如何让你的日志中的逻辑
通常你应该有两个动作,一个是豪我/登录表单和用户登录回家。您可以在应用程序控制器上创建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
此解决方案完美地工作,因为它测试用户是否登录每他试图访问的控制器/操作。
Steve Richert写了一篇很棒的文章。当定义路线时,他正在使用advanced constraint,see here
感谢这篇文章其实很有趣。该博客看起来非常棒,感谢资源。 – Kevin
感谢这和我正在调查设计 – Kevin