Ruby on rails 允许用户在特定条件下导航到a/show页面

Ruby on rails 允许用户在特定条件下导航到a/show页面,ruby-on-rails,ruby,controller,Ruby On Rails,Ruby,Controller,我希望用户能够访问matchups/:id/show,但是,只有当他们使用网站内置的搜索功能搜索匹配时,而不是当他们直接在导航栏中输入url时,才能访问matchups/:id/show。搜索功能使用一个控制器操作来查找他们正在查找的匹配,并将\u重定向到匹配的显示页面 原因是用户在网站上投票,每次投票都会得到一笔用于搜索的费用。我希望他们能够搜索一场比赛,但不能自己导航到比赛,从而避免获得积分的需要 现在,搜索功能会查找他们正在查找的匹配项,并简单地执行以下操作: redirect_to @m

我希望用户能够访问matchups/:id/show,但是,只有当他们使用网站内置的搜索功能搜索匹配时,而不是当他们直接在导航栏中输入url时,才能访问matchups/:id/show。搜索功能使用一个控制器操作来查找他们正在查找的匹配,并将\u重定向到匹配的显示页面

原因是用户在网站上投票,每次投票都会得到一笔用于搜索的费用。我希望他们能够搜索一场比赛,但不能自己导航到比赛,从而避免获得积分的需要

现在,搜索功能会查找他们正在查找的匹配项,并简单地执行以下操作:

redirect_to @matchup
因此,我试图在控制器的
show
方法上放置一个before_action过滤器,但没有成功,因为这也阻止了用户在使用搜索功能时访问配对的show页面


这可能吗?谢谢

您可以查看推荐人是否完成了此操作。当用户在导航栏中输入URL时,它将不会有任何引用

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

if request.referer
  #came (probably) from search
else
  #came by entering url in navigation bar
end
但是,如果用户来自任何页面而不是搜索页面,则此处将存在
request.referer
。如果您只想在来自搜索页面时执行某项操作,您有许多选项,包括:

  • 添加一块饼干
  • 将查询字符串添加到URL,以标识其引用的页面
  • 如果符合您可接受的模式,您可以签入
    request.referer

非常好的建议,谢谢。如果我最终使用了一个,我会尝试并报告。再次感谢您,请小心,因为推荐人信息可能会被屏蔽,甚至不会被浏览器返回。该信息在过去曾被使用过,而针对其可用性的数据隐私争论可能会使其变得不可靠。看到和