2014-04-15 86 views
0

我有一個路線文件(滑軌4.0.4應用程序):軌道4嵌套資源路由錯誤

resources :products do 
    resources :variants, except: :index 
end 

耙路線給出:

 product_variants POST /products/:product_id/variants(.:format)    variants#create 
    new_product_variant GET /products/:product_id/variants/new(.:format)   variants#new 
    edit_product_variant GET /products/:product_id/variants/:id/edit(.:format) variants#edit 
     product_variant GET /products/:product_id/variants/:id(.:format)   variants#show 
         PATCH /products/:product_id/variants/:id(.:format)   variants#update 
         PUT /products/:product_id/variants/:id(.:format)   variants#update 
         DELETE /products/:product_id/variants/:id(.:format)   variants#destroy 

所以我用

提議
<%= form_for [@product, @variant] do |f| %> 

但是這會產生(注意URL):

<form accept-charset="UTF-8" action="/variants/1" class="edit_variant" id="edit_variant_1" method="post"> 

我也得到(當然)路由錯誤說沒有路由與PATCH匹配/變/ 1

同樣奇怪的行爲時,我重定向到一個API控制下API/活的命名空間:

redirect_to [:api, @product, @variant] 

拉去:沒有路由與/ API匹配/變/ 1

所以:

  • 我檢查了所有的路線
  • 我知道如何巢資源和命名空間他們
  • 我想我知道如何生成URL的;-)

不知何故,@products被忽略時產生網址

有沒有人有線索在哪裏尋找更進一步?

+4

您可以確認'@ product'變量不是零。 – Magnuss

回答

1

看看你的變種控制器。你是否在實例化@product?

也可能會發布控制器的代碼。

希望這會有所幫助!

Alex

0

好的問題真的存在於不同的控制器中。我以某種方式實例化@products之前的行動,但顯然做錯了。

似乎是一個能量飲料問題的流氓。感謝您指點我正確的解決方案!