Rails 4包含Rails.application.routes.url_helper未定义的nil:NilClass



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

我不确定它为什么会这样做,因为我已经在控制台中测试过了,当我把它放在那里时,它做得很好。

类和模块很简单:

 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,但这似乎也不起作用。

一种方法是使用includedmethod_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

最新更新