Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Twitter如何根据登录与否获得两个不同的主页轨道3.1_Ruby On Rails_Ruby On Rails 3_Twitter_Ruby On Rails 3.1_Rails Routing - Fatal编程技术网

Ruby on rails Twitter如何根据登录与否获得两个不同的主页轨道3.1

Ruby on rails Twitter如何根据登录与否获得两个不同的主页轨道3.1,ruby-on-rails,ruby-on-rails-3,twitter,ruby-on-rails-3.1,rails-routing,Ruby On Rails,Ruby On Rails 3,Twitter,Ruby On Rails 3.1,Rails Routing,如果在未登录时转到,您将看到带有登录和注册字段的营销页面 但是,如果您在登录时访问该网站,您将看到Twitter句柄的活动流 我知道在Rails中实现这一点的一种方法是为登录用户提供一个home/index,而只需为营销站点使用public/index.html。但是Twitter没有使用public/index.html,所以我想知道他们是怎么做到的 这是否只是一个简单的情况,即有一个根路由,但根据用户是否登录,if语句会显示两个不同的页面 或者有没有其他更奇特的路由技巧,我可以用来做到这一点

如果在未登录时转到,您将看到带有登录和注册字段的营销页面

但是,如果您在登录时访问该网站,您将看到Twitter句柄的活动流

我知道在Rails中实现这一点的一种方法是为登录用户提供一个
home/index
,而只需为营销站点使用
public/index.html
。但是Twitter没有使用
public/index.html
,所以我想知道他们是怎么做到的

这是否只是一个简单的情况,即有一个根路由,但根据用户是否登录,if语句会显示两个不同的页面

或者有没有其他更奇特的路由技巧,我可以用来做到这一点

如果它只是一个
If语句
,那似乎有点不太对劲……不是吗


谢谢。

这可能会让你领先一步

它可以将未登录的用户重定向到不同的控制器,用户会话的检查可以在\u filter之前完成。默认情况下,处理特定路由的控制器方法会呈现具有相应名称的视图(主/索引路由链接到主控制器和索引操作,从而在app/views/home文件夹中呈现view 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
结束

在这种情况下,“登录用户”将是与app/views/home文件夹不同的视图(模板或html.erb文件)


有关更多信息,请查看此处:

为什么您认为使用
if
语句来检测登录的用户做一些不同的事情是不礼貌的?@John Topley,因为这感觉就像我在使用
视图来解决
路由问题-哪个
配置/routes.rb
应该解决。选择的答案给了我答案我正在寻找的信息…这篇博文确实证实了我的怀疑,即视图和控制器路由看起来确实有问题。我可以看到您来自哪里,但条件逻辑将在控制器中(而不是视图)。控制器负责处理用户输入和视图选择,所以我看不出有什么问题。接受的答案是一个优雅的解决方案。这太棒了。谢谢。你有没有可能知道Twitter是如何通过URL中的用户名进行导航的?我在这里问过,但我有很多问题(见我对答案的评论)-