关于ruby:升级到Rails 3.1后,没有路由与[GET]” / reporting / from_perl / 0″匹配

No route matches [GET] “/reporting/from_perl/0” after upgrading to Rails 3.1

我正在逐步升级一个非常老的Rails应用程序。此刻,我陷入了Rails 3.1的困境。我完成了所有相关的升级步骤。目前,我不想使用资产,因此我在config / application.rb中禁用了它。

将我的Gemfile中的rails版本从3.0.20更改为3.1.12时,立即出现no-route-matches错误。我还将所有升级步骤都改回了3.0,以查看导致错误的部分,但仅当我更改Gemfile中的行时才会发生。

我的路线.rb:

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

请告诉我是否需要更多代码。

耙道:

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

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

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


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


您是否在URL帮助器中的对象上调用Object#to_i?可能是对象为nil,而nil.to_i始终为0。还要注意,rails主ID从1开始。

因此,您应该尝试运行耙路径:

1
ruby bundle exec rake routes

运行该命令后,您应该会根据您的路由文件看到可用的URL列表。