我正在使用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個插件再次合作。
也許瘋了問,但你重新啓動服務器? – MrYoshiji 2013-02-08 18:31:11
是的,我沒有重新啓動我的服務器,並得到了相同的結果。 – Dubbs 2013-02-08 18:34:05
嗯/sessions(.:format)似乎迴應GET請求,並且您要求POST方法。你有沒有嘗試過:get? – MrYoshiji 2013-02-08 18:36:15