让用户在特定条件下导航到/显示页面

时间:2013-10-18 03:59:03

标签: ruby-on-rails ruby controller

我希望用户能够获得matchups /:id / show,但是,只有当他们使用网站的内置搜索功能搜索匹配时,而不是直接在导航栏中输入网址时。搜索功能使用控制器动作来查找他们正在寻找的比赛,并redirects_to到比赛的节目页面。

这样做的原因是用户对网站上的内容进行投票,并且每次投票时都会获得用于搜索的信用。我希望他们能够搜索比赛,但不能自己导航,因此无需获得积分。

现在,搜索功能找到他们正在寻找的匹配,并且只是:

redirect_to @matchup

因此我尝试在控制器的show方法上放置一个before_action过滤器不起作用,因为它还阻止用户在使用搜索功能时访问该匹配的显示页面。

这可能吗?谢谢!

1 个答案:

答案 0 :(得分:0)

您可以检查引荐来源以完成此操作。当用户在导航栏中输入URL时,它将没有任何引用者。

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

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

但是,如果用户来自任何页面而不是搜索页面,则此处request.referer将存在。如果你想只是来自搜索页面,你有很多选择,包括:

  • 添加Cookie
  • 向网址添加查询字符串,以标识其引用的网页
  • 如果request.referer符合您的可接受模式,您可以办理登机手续。