0

ただし、ナビゲーション バーに URL を直接入力したときではなく、サイトの組み込みの検索機能を使用して対戦を検索した場合にのみ、ユーザーが matchups/:id/show にアクセスできるようにしたいと考えています。検索機能は、探している対戦とredirects_to対戦の表示ページを見つけるコントローラー アクションを使用します。

この理由は、ユーザーがサイト上のものに投票し、投票するたびに、検索に使用できるクレジットを得るからです。私は彼らがマッチアップを検索できるようにしたいが、自分でマッチアップに移動しないようにして、クレジットを獲得する必要がないようにしたい.

現在、検索機能は彼らが探している対戦を見つけ、単純に次のことを行います。

redirect_to @matchup

そのため、コントローラーのメソッドに before_action フィルターを配置しようとしてshowも機能しませんでした。これは、ユーザーが検索機能を使用したときに、対戦のショー ページにアクセスすることも妨げたためです。

これは可能ですか?ありがとう!

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 に答える