将Rails 3.0升级到3.1时,路由停止工作

时间:2013-02-08 18:27:06

标签: ruby-on-rails ruby-on-rails-3.1 routes view-helpers url-for

我正在使用Ruby 1.8.7和Rails 3.1。我的应用程序在Rails 3.0中运行良好但是当我把它提升到Rails 3.1.4时,我的所有url帮助程序都破了!

过去两天谷歌搜索疯子之后,我已经放弃了,现在是时候寻求帮助了。我不相信问题是我的routes.rb文件,但在视图/帮助方面更多。

我的routes.rb中有以下内容:

resources :sessions

在我的主页视图中,我有以下link_to,其中有错误:

<%= link_to "Login", new_session_path %>

当我做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上出错:

<%= form_tag sessions_path, :method => :post do -%>

我得到的错误如下:

ActionView::Template::Error (undefined local variable or method `sessions_path' for #<#<Class:0x109cb8900>: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:

以下作为Mr.Yoshiji建议:

Rails.application.routes.url_helpers.sessions_path

更新3:

我通过删除供应商目录中的一些旧的Rails 2插件让sessions_path再次运行。

1 个答案:

答案 0 :(得分:0)

删除了供应商/插件中的一些Rails 2插件。