0

我正在使用Ruby 1.8.7和Rails 3.1。我的應用程序在Rails 3.0中運行良好,但是當我將它撞到Rails 3.1.4時,我所有的url幫助器都崩潰了!將Rails 3.0升級到3.1時,路由停止工作

在過去2天內像瘋子一樣谷歌搜索之後,我已經放棄了,現在是尋求幫助的時候了。我不相信問題是與我的routes.rb文件,但更多的視圖/幫手一側。

我在routes.rb中的以下內容:

resources :sessions 

在我的主頁查看我有以下的link_to,其中出現了錯誤:

<%= link_to "Login", new_session_path %> 

當我做耙路線,我得到以下輸出,所以路徑存在:

  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:

以下擔任MrYoshiji建議:

Rails.application.routes.url_helpers.sessions_path 

更新3:

我得到了sessions_path通過去除一些舊的Rails在vendor目錄2個插件再次合作。

+0

也許瘋了問,但你重新啓動服務器? – MrYoshiji 2013-02-08 18:31:11

+0

是的,我沒有重新啓動我的服務器,並得到了相同的結果。 – Dubbs 2013-02-08 18:34:05

+0

嗯/sessions(.:format)似乎迴應GET請求,並且您要求POST方法。你有沒有嘗試過:get? – MrYoshiji 2013-02-08 18:36:15

回答

0

刪除了供應商/插件中的一些Rails 2插件的伎倆。