[英]Is there anyway to use a public/index.html for non-logged in users, but then home#index for logged in - in Rails 3?
[英]How to set a home page for logged in users and non logged in users?
我将如何在Rails应用程序中进行设置,以便如果首次访问我的网站www.example.com的用户看到的页面可以登录,但是如果已经登录www.example.com的用户现在可以显示其登录信息,拥有自己的帖子,但仍使用相同的www.example.com网址。
如果他们已登录,或者是否有其他方法可以执行基于渲染模板的操作?
您可以将users#home设置为根URL:
def home
if logged_in?
@blogs = current_user.blogs
render :action => 'logged_in'
else
render :action => 'non_logged_in'
end
end
app / views / users文件夹中有2个文件:logging_in.html.erb和non_logged_in.html.erb
这取决于您如何进行登录逻辑
通常,您应该执行两个操作,一个用于家庭/登录表单,另一个用于用户在家登录。 您可以在应用程序控制器上创建一个before_filter ,以便可以测试用户是否已登录,然后将其重定向到家(注销)。
如果您不使用自己的代码或其他解决方案,我想向您推荐这个叫做devise的 gem,它本身实现了很多登录逻辑,并且也很容易更改。
编辑:我认为此解决方案比提出的其他解决方案要好,我没有放置代码(尽管它与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
该解决方案非常有效,因为它可以测试用户是否在他尝试访问的每个控制器/操作中登录。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.