Twitter如何根据登录获得两个不同的主页? - Rails 3.1

时间:2011-09-07 11:49:41

标签: ruby-on-rails ruby-on-rails-3 twitter ruby-on-rails-3.1 rails-routing

如果您在未登录时转到Twitter.com,则会看到包含登录信息的营销页面。注册领域。

但是,如果您在登录时去那里,您将看到您的Twitter处理的活动流。

我知道在Rails中执行此操作的一种方法是为登录用户设置home/index,并将public/index.html用于营销网站。但Twitter没有使用public/index.html,所以我想知道他们是如何做到的?

这只是一个简单的例子,它有一个根路由,但是if语句根据用户是否登录显示两个不同的页面?

或者是否还有一些其他更奇特的路由技巧可以用来做到这一点?

如果它只是一个if-statement,那似乎有点hacky ......不是吗?

感谢。

3 个答案:

答案 0 :(得分:3)

答案 1 :(得分:3)

默认情况下,处理特定路由的控制器方法会呈现一个具有相应名称的视图(主页/索引路由链接到主控制器和索引操作,后者又会在app / views / home文件夹中呈现视图index.html.erb )。

但是,在处理根请求的控制器方法中,您可以根据用户登录的事实简单地呈现不同的视图。

你可能会有这样的事情:

class HomeController
  def index
   ...
   if user_logged_in?
      render "logged_in_user"
   # else it will render the index view by default
   end
end

在这种情况下,“logged_in_user”将是app / views / home文件夹中的不同视图(模板或html.erb文件)。

有关详细信息,请查看此处:Rails rendering guide

答案 2 :(得分:1)

它可以将某些未登录用户重定向到不同的控制器,用户会话的检查可以在before_filter中完成

相关问题