2

Rails 中是否有任何方法可以检查用户当前正在查看的页面?

我的例子:在我网站的 head 部分,我需要知道用户是否打开了博客文章。如果用户正在查看帖子,则需要在头部部分添加 facebook 打开图元标记,因为用户可以选择喜欢该博客帖子。

如果有人可以帮助我,那将是无价的。

4

3 回答 3

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 元标签。

于 2012-07-23T23:22:39.913 回答
1

在#RubyOnRails IRC 频道中 Radar 的帮助下,我使用了以下代码:

params[:action]params[:controller]

于 2012-07-23T23:02:20.337 回答
0

您可以使用控制器中可用的请求助手检查请求的所有上下文(操作、控制器、标头...)

http://api.rubyonrails.org/classes/ActionDispatch/Request.html

于 2012-04-21T14:54:10.417 回答