2012-04-21 2 views
2

Есть ли способ в Rails проверить, какую страницу пользователь просматривает сейчас?Проверьте, какая страница находится на

мой пример: в разделе главы моего веб-сайта мне нужно знать, открыл ли пользователь сообщение в блоге. Если пользователь просматривает сообщение, то в разделе заголовка facebook открываются метатеги, которые нужно добавить, потому что пользователь имеет возможность любить сообщение в блоге.

Было бы неоценимым, если бы кто-то мог мне помочь в этом.

ответ

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 в местах, где они применяются.

0

Вы можете проверить весь контекст запроса (действия, контроллер, заголовки ...) с помощью помощнику запроса, который доступен в контроллере

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

+2

Должен, вероятно, предоставить короткий пример кода или ссылки API. –

+0

уже включил API doc;) –

+0

Буду признателен, если вы могли бы помочь мне с самим кодом. Я совершенно новый с RoR в целом. Вот пример URL-адреса, когда просматривается сообщение в блоге: http://my-site.herokuapp.com/blog/posts/junior-dos-santos. «junior-dos-santos» - это заголовок сообщения, я считаю, что «блог» - это контроллер, и действие «постов» (я не уверен в контроле и действии) – Dantes

1

С помощью радара в #RubyOnRails IRC канал, я использовал следующий код:

params[:action] и params[:controller]

Смежные вопросы