module AHelper
class Builder
def link
build_link(@apple)
end
end
def build_link(sth)
link_to "#", "buy #{sth}"
end
end
在辅助模块中,可以调用link_to方法,但在类Builder中,它不是。因此,我正在寻找一种方法来调用辅助模块中包含的外部方法,并将实例变量值传递给此方法。
我不想将ActionView :: UrlHelper包含在类中,因为它已经可以用于帮助程序模块。 link_to只是一个演示需求的示例。如何在铁轨上的红宝石中做到这一点?
答案 0 :(得分:3)
您可以通过将视图上下文传递给Builder
module AHelper
class Builder
def initialize(view)
@view = view
end
def link
@view.build_link(@apple)
end
end
def build_link(sth)
link_to "#", "buy #{sth}"
end
end
当您实例化构建器时,如果它位于控制器中,则传递view_context
;如果它位于帮助器或视图中,则传递self
。