2012-03-18 3 views
0

Facebook 봇 특수 데이터를 렌더링하려고합니다. 내 페이지 컨트롤러에 rails before_filter, facebook 사용자 에이전트 및 동적 OpenGraph 데이터

<!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> 

그리고이 og.html.erb 한 :

# 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 해시를 설정하는 방법은 무엇입니까?

답변

2

나는

# 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 
+1

그것은 greate입니다

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 

다음 페이지 컨트롤러이된다,이 같은와 ApplicationController에 방법을 정의 할 수 있습니다 생각하지만, 내가 render_og 방법의 인수로 자책골을 설정할 수 있습니다 ? –

+0

문제가 해결되었습니다. 다시 감사합니다 –