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
    不能在模块本身上调用,但可以在类的实例上调用(包含
    多态属性
    )?(我更新了示例)