ユーザーが現在表示しているページをRailsで確認する方法はありますか?
私の例: 私の Web サイトの head セクションで、ユーザーがブログ投稿を開いたかどうかを知る必要があります。ユーザーが投稿を表示している場合、ヘッド セクションに facebook オープン グラフ メタ タグを追加する必要があります。これは、ユーザーがブログ投稿を気に入るオプションがあるためです。
誰かがこれで私を助けることができれば、それは非常に貴重です.
ユーザーが現在表示しているページをRailsで確認する方法はありますか?
私の例: 私の Web サイトの head セクションで、ユーザーがブログ投稿を開いたかどうかを知る必要があります。ユーザーが投稿を表示している場合、ヘッド セクションに facebook オープン グラフ メタ タグを追加する必要があります。これは、ユーザーがブログ投稿を気に入るオプションがあるためです。
誰かがこれで私を助けることができれば、それは非常に貴重です.
request
他の回答が述べているように、オブジェクトまたはparams
ハッシュを調べることで現在のページを確認できます。
ただし、ページのコンテキストを明示的にチェックせずにFacebookメタタグを設定するためのより良い方法があります。content_for
ヘルパーメソッドはここで完璧なヒットです。こちらのドキュメントを参照してください:http://api.rubyonrails.org/classes/ActionView/Helpers/CaptureHelper.html#method-i-content_for
基本的に、content_for
引数としてブロックを取り、他の場所に表示できる出力をキャプチャしますyield
。
したがって、ビューでいくつかのコンテンツをキャプチャできます。
# index.html.erb (blog index)
<% content_for :facebook_meta do %>
<meta content='My blog' property='og:site_name'>
...
<% end %>
# show.html.erb (single blog post)
<% content_for :facebook_meta do %>
<meta content='<%= @post.title %>' property='og:site_name'>
...
<% end %>
そしてそれらをレイアウトで表示します:
# application.html.erb (application layout)
<html>
<head>
<%= yield :facebook_meta %>
</head>
</html>
上記は、このシナリオで現在のコントローラー/アクションをチェックするよりもはるかにクリーンです。Facebookメタタグは、それらが適用される場所でのみ定義します。
#RubyOnRails IRC チャネルの Radar の助けを借りて、次のコードを使用しました。
params[:action]
とparams[:controller]
コントローラーで利用可能なリクエストヘルパーを使用して、リクエストのすべてのコンテキスト (アクション、コントローラー、ヘッダーなど) を確認できます。
http://api.rubyonrails.org/classes/ActionDispatch/Request.html