Ruby on rails Twitter如何根据登录与否获得两个不同的主页轨道3.1
如果在未登录时转到,您将看到带有登录和注册字段的营销页面 但是,如果您在登录时访问该网站,您将看到Twitter句柄的活动流 我知道在Rails中实现这一点的一种方法是为登录用户提供一个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语句会显示两个不同的页面 或者有没有其他更奇特的路由技巧,我可以用来做到这一点
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中的用户名进行导航的?我在这里问过,但我有很多问题(见我对答案的评论)-