2013-01-02 43 views
0

比方說,你必須定義爲Facebook應用程序ID的配置變量:如何讓每個Rails動作的結果都可用?

TestSiteRails::Application.configure do 
    config.facebook_app_id = '123146123188122' 
end 

您希望此變量中的每一個動作是可用的,所以它的主要佈局,application.html.haml的可用:

!!! html 
%html 
    %head 
    %body 
    #fb-root 
    :javascript 
     window.fbAsyncInit = function() { 
     // init the FB JS SDK 
     FB.init({ 
      appId  : '#{@facebook_app_id}', // Configured facebook app id 
      channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel File for x-domain communication 
      status  : true, // check the login status upon init? 
      cookie  : true, // set sessions cookies to allow your server to access the session? 
      xfbml  : true // parse XFBML tags on this page? 
     }); 

    = yield :contents 

與其在每個控制器操作中重複執行此操作的代碼,我怎樣才能使這對每個操作都可用?

回答

1

你可以把它放到你的ApplicationController,讓所有的控制器繼承它:

class ApplicationController 
    before_filter :set_facebook_app_id 

    private 

    def set_facebook_app_id 
    @facebook_app_id ||= Rails.configuration.facebook_app_id 
    end 
end 

或者,如果你需要它來訪問的意見也作爲一個輔助方法:

class ApplicationController 
    def facebook_app_id 
    Rails.configuration.facebook_app_id 
    end 
    helper_method :facebook_app_id 
end 
0

你可以在application_controller中使用before_filter,但我認爲如果你打算使用它來獲得一個常量id,你可以使用一個常量。

相關問題