2011-05-23 58 views
0

,我有以下嵌套的資源在我routes.rb文件沒有路由匹配錯誤 - 使用嵌套資源

​​

我的模型:

class Issuer < ActiveRecord::Base 
    has_many :certificates 
end 

class Certificate < ActiveRecord::Base 
    belongs_to :issuer 
end 

我得到當我訪問以下錯誤:/issuer/2/certificates

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

任何幫助將不勝感激..提前致謝!

編輯:MY rake routes

issuer_certificates GET /issuer/:issuer_id/certificates(.:format)   {:action=>"index", :controller=>"certificates"} 
         POST /issuer/:issuer_id/certificates(.:format)   {:action=>"create", :controller=>"certificates"} 
new_issuer_certificate GET /issuer/:issuer_id/certificates/new(.:format)  {:action=>"new", :controller=>"certificates"} 
edit_issuer_certificate GET /issuer/:issuer_id/certificates/:id/edit(.:format) {:action=>"edit", :controller=>"certificates"} 
    issuer_certificate GET /issuer/:issuer_id/certificates/:id(.:format)  {:action=>"show", :controller=>"certificates"} 
         PUT /issuer/:issuer_id/certificates/:id(.:format)  {:action=>"update", :controller=>"certificates"} 
         DELETE /issuer/:issuer_id/certificates/:id(.:format)  {:action=>"destroy", :controller=>"certificates"} 

回答

2

您應該使用的資源(複數),而不是資源的參考:發行人。所以請試試這個:

resources :issuers do 
    resources :certificates 
end 

and issuers/2/certificates will work。

+0

我會粘貼我的'耙路線' – 2011-05-23 16:04:32

+0

請看看:http://guides.rubyonrails.org/routing.html#nested-resources。這正是你的情況下解決我的方式:) – 2011-05-23 17:48:06

0

您沒有爲/issuer/2/certificates定義的PUT。相反,您已將其定義爲/issuer/2/certificates/123。這就是你得到這個錯誤的原因。

如果您要編輯certificate,請確保生成正確的鏈接幷包含certificate_id

1

在你的routes.rb文件要定義發行人單一資源

resource :issuer do   # <----- using resource instead of resources 
    resources :certificates 
    end 

有了奇異的資源,路由你將不允許:id來匹配,所以在你的榜樣,

issuer/2/certificates 

這是給你悲傷的「2」。您應該刪除它或在您的routes.rb文件中將issuer定義爲標準(非單一)資源。

+0

沒關係。從您發佈的耙路線輸出中,我看到issuer_ids匹配。你可能只是在你的問題中在routes.rb中輸入了一個錯字。 – 2011-11-25 20:49:52

相關問題