Ruby on rails Rails 3:在单独的模块中访问多态url方法
我知道我可以像这样在一个单独的模块Ruby on rails Rails 3:在单独的模块中访问多态url方法,ruby-on-rails,ruby-on-rails-3,module,Ruby On Rails,Ruby On Rails 3,Module,我知道我可以像这样在一个单独的模块lib/utils.rb中调用url\u helpers module Utils def self.get_url(object=nil) if object.nil? return Rails.application.routes.url_helpers.root_url else return Rails.application.routes.url_helpers.polymorphic_url(object)
lib/utils.rb中调用url\u helpers
module Utils
def self.get_url(object=nil)
if object.nil?
return Rails.application.routes.url_helpers.root_url
else
return Rails.application.routes.url_helpers.polymorphic_url(object)
end
end
end
如何访问多态url
?使用此代码,我得到:
undefined method `polymorphic_url' for #<Module:0x00000004be0128>
未定义的方法“多态url”#
我使用的是Rails 3.2
谢谢您应该就这些问题咨询APIdocks。根据Rails版本的不同,您可以在几个不同的地方找到多态url
:
对于Rails 4,您只需将适当的模块包含到您的模块/类中:
include ActionController::PolymorphicRoutes
就这样 谢谢你的快速回复。我忘了说我在轨道3上。我按照你的建议做了,但是有了这个ActionDispatch::Routing::PolymorphicRoutes.polymorphic_url(object)
我得到了一个错误:ActionDispatch::Routing::PolymorphicRoutes:Module的未定义方法“polymorphic_url”
,所以我认为类层次结构与方法路径或某些东西不匹配……这很奇怪。在Rails V3.2.16中,它在该模块中定义:ActionDispatch::Routing::PolymorphicRoutes
。您使用的Rails的确切版本是什么?您是否尝试包含该模块而不是调用其方法?问题是这些方法被定义为实例方法<代码>多态url
不能在模块本身上调用,但可以在类的实例上调用(包含多态属性
)?(我更新了示例)