0

我希望用户能够访问 matchups/:id/show,但是,只有当他们使用网站的内置搜索功能搜索比赛时,而不是当他们直接在导航栏中输入 url 时。搜索功能使用一个控制器动作来查找他们正在寻找redirects_to的比赛和比赛的显示页面。

这样做的原因是用户对网站上的事物进行投票,并且每次他们投票时,他们都会获得用于搜索的积分。我希望他们能够搜索比赛,但不要自己导航到比赛,从而避免获得积分的需要。

现在,搜索功能找到了他们正在寻找的比赛并简单地做:

redirect_to @matchup

所以我尝试在控制器的show方法上放置一个 before_action 过滤器没有奏效,因为它还阻止了用户在使用搜索功能时访问匹配的显示页面。

这可能吗?谢谢!

4

1 回答 1

0

您可以检查推荐人以完成此操作。当用户在导航栏中输入 URL 时,它不会有任何引荐来源网址。

您可以在控制器中执行此操作。

if request.referer
  #came (probably) from search
else
  #came by entering url in navigation bar
end

request.referer但是,如果用户来自任何页面而不是搜索页面,则此处将存在。如果您只想在它们来自搜索页面的情况下做某事,您有很多选择,包括:

  • 添加饼干
  • 将查询字符串添加到 URL 以识别它引用的页面
  • 您可以检查request.referer它是否符合您可接受的模式。
于 2013-10-18T04:14:52.420 回答