1

중첩 된 경로 (위대한 URL 도우미 및 액세스 및 훨씬 더)에 대한 핸들과 accepts_nested_attributes_for가있는 폼의 중첩 된 리소스가 있다고 생각하지만 사용 방법은 무엇입니까? 경로에서 둘 다 볼과 같이Rails 중첩 된 루틴 및 경로 및 route.rb에서 설정하는 방법

resources :schools do 
    resources :documents 
end 

또한

resources :schools :has_many => :documents 
end 

당신이 나에게 이러한 차이를 알 수 있습니다하시기 바랍니다.
분명히 has_many는 일대 다 관계입니다. 경로 도우미를 생성하고 올바른 라우팅이 필요하며 do 블록이 의미하는 관계는 무엇입니까? 그냥 경로 도우미 (/ 학교/문서), 학교에서 여러 가지 자료 (예 : 서적, 문서 제외)를 원한다면 내가 할 수있는 첫 번째 방법은 do-end 블록에 추가하지만 두 번째 방법은 두 줄 , 각 has_many에 대해 하나?
가이드와 API를 읽었지만 여기서는 차이점과 사용법을 명확하게 설명하지 못합니다. 위대한) 많이 감사하겠습니다 :)

오 물론 그들은 모델에 has_many 데 관련이 있습니다 - 그래서 이러한 관계는 모델에서 has_many, 컨트롤러 (주로 경로의 사용을 통해) 수있는 것 같아요. (중첩 된 특성이있는 양식을 통해)보기에 표시됩니다.

답변

1

그들은 모두 같은 일을, 당신의 최대 난 당신이 여러 중첩에 대한 :has_many => [:docs, :otherthings]을 할 수는 쉽게 BTW has_many 형식과

을 읽을으로 블록 형식을 선호하는 하나의

선택 routes

+0

매우 도움이되는 btw 힌트를 좋아합니다. –

0

나는 has_many 구문이 Rails 2에 블록 구문이 맘에 들지 않는 사람들을위한 속기로 추가 된 것이라고 생각한다. 그것에 대한 블로그 게시물 here을 볼 수 있습니다. 방금 시도했는데 레일즈 3은 has_many 옵션을 무시한 것 같습니다. 그래서 나를 위해 출력했다 :

resources :schools do 
    resources :documents 
end 

이 경로를 만들어 :
schools GET /schools(.:format)   {:action=>"index", :controller=>"schools"} 
      POST /schools(.:format)   {:action=>"create", :controller=>"schools"} 
new_school GET /schools/new(.:format)  {:action=>"new", :controller=>"schools"} 
edit_school GET /schools/:id/edit(.:format) {:action=>"edit", :controller=>"schools"} 
    school GET /schools/:id(.:format)  {:action=>"show", :controller=>"schools"} 
      PUT /schools/:id(.:format)  {:action=>"update", :controller=>"schools"} 
      DELETE /schools/:id(.:format)  {:action=>"destroy", :controller=>"schools"} 

내가 진짜 대답을 생각 :

resources :schools :has_many => :documents 

는 경로를 생성

school_documents GET /schools/:school_id/documents(.:format)   {:action=>"index", :controller=>"documents"} 
        POST /schools/:school_id/documents(.:format)   {:action=>"create", :controller=>"documents"} 
new_school_document GET /schools/:school_id/documents/new(.:format)  {:action=>"new", :controller=>"documents"} 
edit_school_document GET /schools/:school_id/documents/:id/edit(.:format) {:action=>"edit", :controller=>"documents"} 
    school_document GET /schools/:school_id/documents/:id(.:format)  {:action=>"show", :controller=>"documents"} 
        PUT /schools/:school_id/documents/:id(.:format)  {:action=>"update", :controller=>"documents"} 
        DELETE /schools/:school_id/documents/:id(.:format)  {:action=>"destroy", :controller=>"documents"} 
      schools GET /schools(.:format)        {:action=>"index", :controller=>"schools"} 
        POST /schools(.:format)        {:action=>"create", :controller=>"schools"} 
      new_school GET /schools/new(.:format)       {:action=>"new", :controller=>"schools"} 
     edit_school GET /schools/:id/edit(.:format)      {:action=>"edit", :controller=>"schools"} 
       school GET /schools/:id(.:format)       {:action=>"show", :controller=>"schools"} 
        PUT /schools/:id(.:format)       {:action=>"update", :controller=>"schools"} 
        DELETE /schools/:id(.:format)       {:action=>"destroy", :controller=>"schools"} 

동안 너의 질문은 그것들이 다른 구문으로도 똑같은 일을하기로되어있었습니다.