【问题标题】:Rails 4 Include Rails.application.routes.url_helper undefined method routes for nil:NilClassRails 4 包括 Rails.application.routes.url_helper nil:NilClass 的未定义方法路由
【发布时间】:2013-06-28 20:39:25
【问题描述】:

我正在开发一个 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,但这似乎也不起作用。

【问题讨论】:

    标签: ruby-on-rails rubygems ruby-on-rails-4


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-06
      • 2015-06-30
      • 1970-01-01
      相关资源
      最近更新 更多