[英]How can I keep an instance variable DRY in a controller helper with Rails?
我正在编写此小部件,该小部件将包含在网站的单个页面中,因此我看不到有理由在ApplicationController中声明我在做什么。 但是,这个新的窗口小部件确实具有相当大的复杂性,因此我想将其与通常处理此页面的控制器分开,因为该控制器已经具有相当的复杂性。 我最初在设计中想到,我可以为控制器创建一个帮助器模块,并将大多数小部件逻辑保留在那里。
我正在尝试编写此帮助程序模块,但是后来我意识到需要从一个位置初始化一个特定的数组,但是需要多个方法来访问它,并且需要确保在任何其他操作之前都对其进行了初始化。其他方法对此数组进行调用。 在这样的模块中,是否可以做一些类似于before_filter的事情,在此模块中,我可以确保在使用之前初始化此变量,或者有更好的整体方法来实现此目标,即“ Rails方式”?
我认为您可以创建一个新类并在before_filter或您的控制器中实例化它。 不确定要达到的目标,但是一个示例可能是:
class MyArrayBuilder
def initialize(some, param)
#something
end
def get_array
return my_array
end
end
class SomethingsController < ApplicationController
before_filter :build_array
def build_array
@array = MyArrayBuilder.new(some, param).get_array
end
end
然后,您将@array
变量传递给您的助手。
我不确定是否有一种“ Rails方式”来做您想做的事情:Rails有很多约定,但是当您开始关心设计和DRY时,我认为最好考虑一下Oriented的良好实践对象编程要比Rails约定好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.