3

我正在开发一个 Ruby gem(针对 Rails 4),我希望能够在其中使用 url 助手。所以我尝试添加include Rails.application.routes.url_helpers,但它导致“nil:NilClass (NoMethodError) 的未定义方法‘路由’”。

我不确定它为什么会这样做,因为我已经在控制台中进行了测试,并且当我将它包含在其中时它确实很好。

类和模块很简单:

 module DynamicMenu
  class Base
    include Rails.application.routes.url_helpers
    def get_menu_links
      @links
    end
    private

    def define_menu_links(args)
     @links = args
    end
  end
end

有想法该怎么解决这个吗?我尝试过包含不同的模块,例如 ActionView::Helpers,但这似乎也不起作用。

4

1 回答 1

0

一种方法是使用includedand ,虽然可能不是最好的方法method_missing。这当然是假设您在ActionViewActionController

这样的事情应该没问题:

module DynamicMenu

   def included(base)
       @parent = base
   end

   def method_missing method, *args
       super unless @parent.methods.index method
       @parent.send(method,args)
   end

 end
于 2013-07-12T14:34:50.617 回答