检查用户所在的页面

时间:2012-04-21 14:50:31

标签: ruby-on-rails

Rails有什么方法可以检查用户当前正在查看哪个页面?

我的例子:在我的网站的head部分,我需要知道用户是否已经开设了博客文章。如果用户正在查看帖子,那么在头部分中需要添加Facebook开放图元标签,因为用户可以选择喜欢博客文章。

如果有人可以帮助我,那将是非常宝贵的。

3 个答案:

答案 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