我在初始化程序中有以下内容:
@fedex ||= Pigeons::Fedex.new(
ENV['FEDEX_KEY'],
ENV['FEDEX_PASSWORD'],
ENV['FEDEX_ACCOUNT'],
ENV['FEDEX_METER']
)
我基本上希望能够从任何控制器调用@fedex.track
。
但是现在当我尝试拨打@fedex.track
时,我得到NoMethodError: undefined method 'track' for nil:NilClass
那么,能够做到这一点我做错了什么?
答案 0 :(得分:2)
我想DaveNewton所说的是:
FEDEX ||= Pigeons::Fedex.new(
ENV['FEDEX_KEY'],
ENV['FEDEX_PASSWORD'],
ENV['FEDEX_ACCOUNT'],
ENV['FEDEX_METER']
)
答案 1 :(得分:0)
如果你真的想做你要求的事情,你可以设置一个前过滤器:
class ApplicationController < ActionController::Base
before_filter :copy_instance_variables_from_initializers
private
def copy_instance_variables_from_initializers
TOPLEVEL_BINDING.eval("instance_variables").each |ivar|
instance_variable_set(ivar.to_s, TOPLEVEL_BINDING.eval(ivar.to_s))
end
end
这不是你想要在制作中使用的东西,正如其他评论/答案所示。