Rails有什么方法可以检查用户当前正在查看哪个页面?
我的例子:在我的网站的head部分,我需要知道用户是否已经开设了博客文章。如果用户正在查看帖子,那么在头部分中需要添加Facebook开放图元标签,因为用户可以选择喜欢博客文章。
如果有人可以帮助我,那将是非常宝贵的。
答案 0 :(得分:3)
正如其他答案所提到的,您可以通过检查request
对象或params
哈希来检查当前页面。
但是有更好的方法来设置Facebook元标记而无需明确检查页面上下文。 content_for
辅助方法在这里非常受欢迎。请参阅此处的文档:http://api.rubyonrails.org/classes/ActionView/Helpers/CaptureHelper.html#method-i-content_for
基本上,content_for
将块作为参数并捕获可以使用yield
显示在其他位置的输出。
因此,您可以在视图中捕获一些内容:
# index.html.erb (blog index)
<% content_for :facebook_meta do %>
<meta content='My blog' property='og:site_name'>
...
<% end %>
# show.html.erb (single blog post)
<% content_for :facebook_meta do %>
<meta content='<%= @post.title %>' property='og:site_name'>
...
<% end %>
并在布局中显示:
# application.html.erb (application layout)
<html>
<head>
<%= yield :facebook_meta %>
</head>
</html>
以上比在这种情况下检查当前控制器/操作更清晰。您只能在他们申请的地方定义Facebook元标记。
答案 1 :(得分:1)
在#RubyOnRails IRC频道的Radar的帮助下,我使用了以下代码:
params[:action]
和params[:controller]
答案 2 :(得分:0)
您可以使用控制器中提供的请求帮助程序检查请求的所有上下文(操作,控制器,标头...)
http://api.rubyonrails.org/classes/ActionDispatch/Request.html