2

ユーザーが現在表示しているページをRailsで確認する方法はありますか?

私の例: 私の Web サイトの head セクションで、ユーザーがブログ投稿を開いたかどうかを知る必要があります。ユーザーが投稿を表示している場合、ヘッド セクションに facebook オープン グラフ メタ タグを追加する必要があります。これは、ユーザーがブログ投稿を気に入るオプションがあるためです。

誰かがこれで私を助けることができれば、それは非常に貴重です.

4

3 に答える 3

3

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メタタグは、それらが適用される場所でのみ定義します。

于 2012-07-23T23:22:39.913 に答える
1

#RubyOnRails IRC チャネルの Radar の助けを借りて、次のコードを使用しました。

params[:action]params[:controller]

于 2012-07-23T23:02:20.337 に答える
0

コントローラーで利用可能なリクエストヘルパーを使用して、リクエストのすべてのコンテキスト (アクション、コントローラー、ヘッダーなど) を確認できます。

http://api.rubyonrails.org/classes/ActionDispatch/Request.html

于 2012-04-21T14:54:10.417 に答える