Rails - 在类实例方法中调用辅助模块方法

时间:2016-03-29 07:19:59

标签: ruby-on-rails ruby

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只是一个演示需求的示例。如何在铁轨上的红宝石中做到这一点?

1 个答案:

答案 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