【问题标题】:No route matches [GET] "/reporting/from_perl/0" after upgrading to Rails 3.1升级到 Rails 3.1 后没有路由匹配 [GET] "/reporting/from_perl/0"
【发布时间】:2015-09-23 05:44:32
【问题描述】:

我正在逐步升级一个非常旧的 Rails 应用程序。目前我被困在 Rails 3.1 上。我做了所有相关的升级步骤。现在我不想使用资产,所以我在 config/application.rb 中禁用了它。

只要将我的 Gemfile 中的 rails 版本从 3.0.20 更改为 3.1.12,我就会收到 no-route-matches 错误。我还将所有升级步骤更改回 3.0 以查看导致错误的部分,但它仅在我更改 Gemfile 中的行时才会发生。

我的路线.rb:

Wawi::Application.routes.draw do
match ":controller(/:action(/:id(.:format)))"
end

如果您需要更多代码,请告诉我。


耙路线:

/:controller(/:action(/:id(.:format)))

(和一个警告:循环参数引用)


也许是另一个有用的提示:该操作是应用程序控制器的一部分。

【问题讨论】:

  • rails 中的 id 通常从 1 开始,而不是 0。你确定你在 db 中有正确的值吗?
  • 对不起,我对 ruby​​/rails 比较陌生,继承了这个项目。据我所知,这是一种将请求从 perl 部分重定向到 ruby​​ 部分的方法。在此方法中,检查 :id 是否存在但未使用。 db 在哪里/如何应该有一个值?

标签: ruby-on-rails ruby ruby-on-rails-3 routes


【解决方案1】:

你是否在你的 url 助手中调用你的对象上的 Object#to_i ?可能对象是 nil 并且 nil.to_i 始终为 0。还要注意,rails 主 id 从 1 开始。

所以你应该尝试运行 rake 路由:

ruby bundle exec rake routes

运行该命令后,您应该会看到基于您的路由文件可用的 url 列表。

【讨论】:

  • 我在上面添加了 rake 路由的输出。
【解决方案2】:

感谢一位同事,我找到了解决方案: 在 application_controller.rb 中 session :session_key => '...' 必须更改为 Rails.application.config.session_options[:key] = '...'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-27
    • 1970-01-01
    • 2014-12-12
    • 2011-10-29
    • 2010-10-16
    • 2015-04-24
    • 2014-04-25
    • 1970-01-01
    相关资源
    最近更新 更多