调用Rails.application.routes.generate()或Rails.application.routes.recognize_path()时出现’RuntimeError:route set not finalized’

我在我的应用程序中使用Rails.application.routes.generate()Rails.application.routes.recognize_path()来使用Rails路由表反汇编和生成URL。 我从来没有遇到过使用Rails 2.3.x系列的问题但是因为Rails 3(特别是3.1.3)我在调用这些命令时遇到了以下错误

RuntimeError: route set not finalized

两个问题:

  • 为什么? 我得到了这个 – 我的应用程序启动并运行并处理其他请求。 为什么现在还没有最终确定路线?
  • 要解决这个错误,我调用Rails.application.routes.finalize! 在调用这些方法之前,因为它似乎工作。 这样做会有什么影响吗?

在Rails 3中,您不使用此技术。 在使用Rails.application.routes.url_helpers之后,您需要包含Rails.application.routes.url_helpers

 class User < ActiveRecord::Base include Rails.application.routes.url_helpers def my_own_url user_url(self) end end