2013-04-09 6 views
1

여기 routes.rb에서 모델의 구조입니다 : URL을내부 모델에 대한 경로를 설정하는 방법은 무엇입니까?

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

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

파일을 선택하기위한 형태로 표시됩니다. 그것은 컨트롤러에 Photos이고 동작은 upload_data입니다.

나는 # <에 대한 오류 메시지가

정의되지 않은 메서드`photos_path '를 얻고 # : ...>

내가 때문에이 컨트롤러의 생각이 다른 사람 안에하지만 어떻게 그것을 해결하기 위해? "Resources should never be nested more than 1 level deep." 코드를 언급 한 바와 같이

, 당신은 1 개 이상의 수준을 사용하고 있습니다 : http://guides.rubyonrails.org/routing.html#nested-resources

가 여기에 메모가 :

+2

'레이크 루트'를 게시 할 수 있습니까? – Zippie

답변

2

일반적으로, 1 개 이상의 수준 깊은 중첩되지 않을해야 Rails Doc

자원의 경고에 유의하는 것이 현명하다.

이것은 중첩 된 리소스가 불필요한 복잡성을 유발하는 경험을 기반으로 한 지침입니다.

설명하는 오류는보기 양식에서 잘못된 경로 도우미를 사용하는 것과 같습니다. 이 중첩되어 있기 때문에, 그것은 photos_path 아니라, 같은 몇 가지 괴물에 중첩 된 모든 자원의 조합 :

model_a_model_b_model_c_upload_data_photos_path(model_a, model_b, model_c) 

당신은 경로에 사용할 올바른 다루기 힘든 경로에 대한 귀하의 rake routes을 확인해야합니다.

0

이 문제를 해결할 수있을 수 있습니다. 나는 좋은 행동이라고 생각하지 않는다.

희망이 도움이 될 것입니다.

관련 문제