假设您有一个facebook app id的配置变量,定义为:
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
不是在每个控制器操作中重复代码来执行此操作,而是如何将其用于每个操作?
答案 0 :(得分: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
答案 1 :(得分:0)
您可以在application_controller中使用before_filter,但我认为如果您要使用它来获得常量ID,则可以使用常量。