一种方法是使用
我正在开发一个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,但这似乎也不起作用。
included
和method_missing
,尽管可能不是最好的方法。当然,这是假设您处于ActionView
或ActionController
这样的东西应该可以:
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