我在 ApplicationController 文件中创建了一个方法,它应该在我的所有操作中设置一个实例变量:
def self.set_body_id(id)
print "This is test"
self.instance_variable_set(:@body_id, id)
end
当我在另一个控制器中调用此方法时,如下所示:
class HostingController < ApplicationController
set_body_id "Test"
def index
end
end
.. 什么也没有发生。@body_id
变量在视图中不可用。所以我运行一个rails控制台来检查这个函数是否被执行,正如我所料,This is test
当我调用a时,我得到一个输出字符串HostingController.new
,但仍然@body_id
是未定义的。
self
我也从 a中删除self.variable_instance_set
,甚至用 a 替换这一行@body_id = "Test"
,但这仍然不起作用。我究竟做错了什么?
编辑:
我知道我在哪里犯了错误。我尝试在创建类实例之前设置实例变量。似乎self.set_body_id
应该参与一个类initialize
,但仍然不知道如何去做。