2012-08-23 72 views
0

的routes.rb的Rails 3路由問題路由錯誤

resources :users do 
    resources :requests , :only => [:new,:create,:destroy] 
end 

user.rb

class User < ActiveRecord::Base 
    attr_accessor :password 
    attr_accessible :email, :firstname, :lastname, :state, :city, :password, :password_confirmation, :image 
# mount_uploader :image, ImageUploader 
has_many :requests 

request.rb

class Request < ActiveRecord::Base 
    attr_accessible :email, :status, :user_id 
    belongs_to :user 
end 

用戶登錄後在從user.show頁我路過時被顯示

<li><span> <%= link_to "Send Request" , new_user_request_path(@user) %> </li> 

我的道路是正確的,但在request.new的鏈接沒有顯示,我收到以下錯誤。

路由錯誤

No route matches {:controller=>"users", :action=>"edit"} 

我新的軌道,任何一個可以請幫助我。

感謝

+0

請清理你的代碼示例,它很難閱讀。 –

+0

我正在清理我的代碼,對於給您帶來的不便表示歉意。 – user501307

+0

我正在嘗試調用操作:新控制器:請求 – user501307

回答

0

它看起來像您所呼叫的edit行動,而不是new行動。這可以解釋的錯誤,因爲你需要的請求與用戶一起傳遞給edit_user_request_path(因爲請求嵌套資源),就像這樣:

edit_user_request_path(@user, @request) 

請再次檢查你的代碼,看看wherthe錯誤實際上是從未來。

+0

我不想edit_user_request,當點擊鏈接時,它應該帶我去請求/ new.Currently當我點擊發送請求鏈接,網址是HTTP://本地主機:3000 /用戶/ 9 /請求/新。並且頁面上顯示的錯誤是路由錯誤 沒有路由匹配{:controller =>「users」,:action =>「edit」} 嘗試運行耙路由以獲取有關可用路由的更多信息。 – user501307

+0

那麼爲什麼錯誤是指'edit'行爲?你在這裏寫的東西缺少一些東西。 –

+0

事實上,它指的是'用戶'控制器也很奇怪,因爲請求應該發送到'requests'控制器。它看起來像'edit_user_path'沒有提供'@ user'作爲參數,這與您所描述的完全不同。 –