我有一个控制器,可以调用另一个类。
class BlahController < ActionController
def index
OtherClass.get_stuff
end
end
在这个课程中,我希望能够编写控制器样式代码。
例如:
class OtherClass
def self.get_stuff
@foo = bar
end
end
但是,我希望在我的视图中存在@foo
,但由于它是一个单独的类,这些变量不会让它重新进入控制器分配 - 所以问题是,我怎么能这样做?
(忽略为什么我不得不召集一个单独的课程,我试图让这段代码适应遗留的代码库而不需要太多的屠杀)
答案 0 :(得分:1)
class BlahController < ActionController
def index
OtherClass.get_stuff(self)
end
end
class OtherClass
def self.get_stuff(that)
that.instance_variable_set(:@foo, bar)
end
end
请注意,我不同意这种方法。正如你所说,我只是在回答这个问题。
我更愿意通过mixins完成此功能,从而减少上面代码中存在的参数耦合。
答案 1 :(得分:0)
像这样结构化的代码将难以阅读和维护。只要你可以,让控制器直接设置视图所需的所有变量:
class BlahController < ActionController
def index
@foo = OtherClass.get_stuff
end
end
class OtherClass
def self.get_stuff
# return the value that should be assigned to @foo
end
end