【问题标题】:'RuntimeError: route set not finalized' when calling Rails.application.routes.generate() or Rails.application.routes.recognize_path()调用 Rails.application.routes.generate() 或 Rails.application.routes.recognize_path() 时出现“RuntimeError: route set not finalized”
【发布时间】:2012-02-15 10:08:59
【问题描述】:

我在我的应用程序中使用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!在调用这些方法中的任何一种之前,因为它似乎有效。这样做有什么影响吗?

【问题讨论】:

  • 你在代码中哪里使用了这个方法?
  • @shingara 在模型中。这应该有所作为吗?
  • 是的,因为你需要使用别的东西。

标签: ruby-on-rails routes


【解决方案1】:

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

class User < ActiveRecord::Base
  include Rails.application.routes.url_helpers

  def my_own_url
    user_url(self)
  end
end

【讨论】:

  • 感谢 shingara。所以模仿 generate() 我可以使用 - Rails.application.routes.url_helpers.url_for("/orders/1".merge(:only_path => true))
  • 但是我如何模仿 Rails.application.routes.recognize_path() 以便我可以获取诸如“/orders/1”之类的 URL 并将其拆分为它的 :controller、:action 和 :id ?
猜你喜欢
  • 1970-01-01
  • 2022-07-19
  • 2019-09-14
  • 2020-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-21
  • 2020-06-28
相关资源
最近更新 更多