2013-11-03 2 views
0

페이지, 섹션 및 블록의 세 가지 모델이 있습니다. 페이지에는 많은 섹션이 있고 섹션에는 많은 블록이 있습니다. 나는 페이지 뷰가 새로운 섹션을 생성하기위한 폼을 가지고 섹션 뷰는 블록을 생성하기위한 폼을 가지고있는 방식으로 그것을 쓰려고한다.Rails Way (4.0)는 관계가있는 CRUD의 여러 수준을 만들 수 있습니까?

내 문제는 페이지 뷰에서 page_id을 # create 메서드 섹션으로 전달하는 것입니다. 어떻게 완료되었는지 잘 모르겠습니다. RESTful이 되려면 URL에 부모 연결 (예 : www.mydomain.com/pages/1/sections/3/blocks/5과 같은 괴물 URL)을 포함시켜야 새 ID를 얻을 수 있으며 다음과 같은 작업을 수행 할 수 있습니까?

def create 
    @page = Page.find(params[:page_id]) 
    @section = @page.sections.build(section_params) 

것은 나는이 (http://ruby.railstutorial.org/) 읽어 봤는데, 그것은 내 같은 사용 사례를 설명에 근접,하지만 난 갇혔어요. CRUD 라우트를 빌드하는 "Rails Way"가 있으며 각 리소스는 다음 내부에 중첩됩니다. 아무도 나에게 계몽 수 있습니까?

+2

Jose Valim의 [inherited_resources] (https://github.com/josevalim/inherited_resources)를 살펴보십시오. beautfiully RESTful 리소스를 처리하고 중첩을 지원합니다. 부수적으로, 섹션이나 블록을 부모를 지정하지 않고 고유하게 처리 할 수 ​​있다면 (고유 한 ID가 있습니까?) 중첩 된 경로가 반드시 필요하지는 않습니다 (원하는 경우 제외). – numbers1311407

+0

링크를 제공해 주셔서 감사합니다. inherited_resources가 Rails 4.0에서 작동하는지 알고 있습니까? –

+0

네 번 업데이트 된 것 같습니다. – numbers1311407

답변

0

Jose Valim의 inherited_resources을보세요. RESTful 리소스를 아름답게 처리하고 중첩을 지원합니다.

그러나 리소스에 고유하게 주소가 지정되어 있으면 정확히 이 필요하지 않습니다. commonrecommends은 하나 이상의 레벨이 깊이 중첩되지 않는다고 알려줍니다. 이것은 :shallow 라우트가 나온 곳으로 거대한 URL과 라우트를 작성하지 않고 routes.rb에서 중첩 된 관계를 표현할 수있는 기능을 제공합니다. 얕은 루트는 유연성을 향상시켜 코드를 다르게 업데이트하지 않고도 리소스를 계층 구조의 안팎으로 이동할 수있게합니다.

특정 페이지에 속한 섹션 만 표시하도록 뷰 및 컨트롤러를 구성하는 방법은 무엇입니까?

물론이 특정 예제는 단일 레벨의 깊이이며, 단일 레벨의 중첩에 대한 권장 사항에 속합니다. /pages/1/sections. 그러나 더 깊숙한 중첩 (또는 모든 것을 최상위 레벨로 유지하는 경우 모두)의 경우 쿼리 문자열을 사용합니다. /sections?page_id=1 또는 /sections/blocks?page_id=1.

... 페이지의 ID를 중첩하지 않고 # create method 섹션으로 전달 하시겠습니까?

이것은 더 간단합니다. 양식 자체에 넣으십시오 (숨겨진 입력, 가능성 있음).

+0

이것에 감사드립니다 - 나는이 작품의 다음 부분에도 붙어 있습니다 : [이 질문] (http : // stackoverflow.당신이 기회가 있다면,/question/19795125/assign-relation-id-to-record-on-create-but-on-update) –