我希望用户能够获得matchups /:id / show,但是,只有当他们使用网站的内置搜索功能搜索匹配时,而不是直接在导航栏中输入网址时。搜索功能使用控制器动作来查找他们正在寻找的比赛,并redirects_to
到比赛的节目页面。
这样做的原因是用户对网站上的内容进行投票,并且每次投票时都会获得用于搜索的信用。我希望他们能够搜索比赛,但不能自己导航,因此无需获得积分。
现在,搜索功能找到他们正在寻找的匹配,并且只是:
redirect_to @matchup
因此我尝试在控制器的show
方法上放置一个before_action过滤器不起作用,因为它还阻止用户在使用搜索功能时访问该匹配的显示页面。
这可能吗?谢谢!
答案 0 :(得分:0)
您可以检查引荐来源以完成此操作。当用户在导航栏中输入URL时,它将没有任何引用者。
您可以在控制器中执行此操作。
if request.referer
#came (probably) from search
else
#came by entering url in navigation bar
end
但是,如果用户来自任何页面而不是搜索页面,则此处request.referer
将存在。如果你想只是来自搜索页面,你有很多选择,包括:
request.referer
符合您的可接受模式,您可以办理登机手续。