将Rails 3.0升级到3.1时,路由停止工作
我使用Ruby 1.8.7与Rails 3.1。 我的应用程序在Rails 3.0中运行良好,但是当我把它提升到Rails 3.1.4时,我所有的url帮助程序都破了!
在过去两天谷歌搜索疯子之后,我已经放弃了,现在是时候寻求帮助了。 我不相信问题是我的routes.rb文件,但在视图/帮助方面更多。
我的routes.rb中有以下内容:
resources :sessions
在我的主页视图中,我有以下link_to,其中出错:
当我做rake路由时,我得到以下输出,所以路径存在:
sessions GET /sessions(.:format) {:controller=>"sessions", :action=>"index"} POST /sessions(.:format) {:controller=>"sessions", :action=>"create"} new_session GET /sessions/new(.:format) {:controller=>"sessions", :action=>"new"} edit_session GET /sessions/:id/edit(.:format) {:controller=>"sessions", :action=>"edit"} session GET /sessions/:id(.:format) {:controller=>"sessions", :action=>"show"} PUT /sessions/:id(.:format) {:controller=>"sessions", :action=>"update"} DELETE /sessions/:id(.:format) {:controller=>"sessions", :action=>"destroy"}
当我在浏览器中转到/ sessions / new时,页面再次加载,路由存在,但它在基于_path的url上出错:
:post do -%>
我得到的错误如下:
ActionView::Template::Error (undefined local variable or method `sessions_path' for #<#:0x109cab840>):
它必须是url_for帮助器,因为路径确实存在。 我还应该寻找什么?
更新1:
我在application_helper.rb中添加了以下内容:
include Rails.application.routes.url_helpers
现在,当我收到以下错误:
In order to use #url_for, you must include routing helpers explicitly. For instance, `include Rails.application.routes.url_helpers
这不是我刚刚做的吗?
更新2:
以下是Yoshiji先生的建议:
Rails.application.routes.url_helpers.sessions_path
更新3:
我通过删除供应商目录中的一些旧的Rails 2插件让sessions_path再次运行。
删除了供应商/插件中的一些Rails 2插件。