2013-04-09 36 views
1

這裏的模型的結構routes.rb如何在內部模型的窗體中設置路徑?

resources :model_a do 
    resources :model_b do 
     resources :model_c do 
     resources :photos do 
      collection do 
      get :upload_data 
      end 
     end 
     ... 
    ... 
    ... 

在URL

http://localhost:3001/model_a/1/model_b/2/model_c/3/photos/upload_data 

顯示形式選擇文件。它在名爲Photos的控制器中,以及動作upload_data

我收到錯誤消息

未定義的方法`photos_path」爲#<#:...>

我想這是因爲這個控制器是另一個者裏面,但如何要解決這個問題?

+2

你可以發佈你的'rake routes'嗎? – Zippie 2013-04-09 13:35:00

回答

2

一般來說,這是明智的聽取在Rails Doc

資源警告不應該被嵌套超過10級深。

這是一個基於深度嵌套資源導致不必要的複雜性的經驗的指南。

您所描述的錯誤聽起來像是由於在視圖窗體中使用了不正確的路徑助手。既然是嵌套的,它不是photos_path,但所有的嵌套的資源來像一些怪物的組合:

model_a_model_b_model_c_upload_data_photos_path(model_a, model_b, model_c) 

您應檢查rake routes爲使用該路徑的正確的和不實用的路線。

0

可能是這可能會解決您的問題:http://guides.rubyonrails.org/routing.html#nested-resources

在這裏有一個需要注意的是:"Resources should never be nested more than 1 level deep."

正如你所提到的代碼,你已經使用了超過1平。我不認爲這是一個好的做法。

希望這會幫助你。

相關問題