rails before_filter, пользовательский агент facebook и динамические данные OpenGraph - PullRequest
0 голосов
/ 18 марта 2012

Я хочу сделать для бота Facebook специальные данные. У меня есть og.html.erb

<!DOCTYPE html><html><head>
<meta property="og:title" content="<%= @og[:title] %>">
<meta property="og:type" content="website">
<meta property="og:url" content="<%= @og[:url] %>">
<meta property="og:description" content="<%= @og[:description] %>">
<meta property="fb:admins" content="100000235955045">
</head><body></body></html>

А это у меня на странице контроллера:

# encoding: UTF-8
class PageController < ApplicationController
  def index
    @og = { :title => 'index title', :description => 'index desc', :url => 'http://someurl.com/index' }
    if request.headers['HTTP_USER_AGENT'].eql? 'facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)'
      render '/og', :layout => false
    end
  end

  def cv
    @og = { :title => 'cv title', :description => 'cv description', :url => 'http://someurl.com/cv/' }
    if request.headers['HTTP_USER_AGENT'].eql? 'facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)'
      render '/og', :layout => false
    end
  end
end

Как я могу СУШИТЬ это? Мне нужно использовать помощник или before_filter? Если я буду использовать before_filter, как я могу установить @og хэш из моего контроллера?

1 Ответ

2 голосов
/ 18 марта 2012

Я думаю, вы можете определить метод в ApplicationController следующим образом:

def render_og
  if request.headers['HTTP_USER_AGENT'].eql? 'facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)'
    render '/og', :layout => false
  end
end

, тогда ваш контроллер страницы станет таким,

# encoding: UTF-8
class PageController < ApplicationController
  def index
    @og = { :title => 'index title', :description => 'index desc', :url => 'http://someurl.com/index' }
    render_og
  end

  def cv
    @og = { :title => 'cv title', :description => 'cv description', :url => 'http://someurl.com/cv/' }
    render_og
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...