2013-02-23 3 views
0
resources :books do 
    resources :chapters 
end 

위의 리소스가 적절하게 중첩되어 있다고 가정 해 보겠습니다. 부모 책 리소스를 만드는 페이지를 만들고 장 리소스를 만드는 또 다른 페이지를 만들고 싶습니다. 챕터를 만들 때 사용자가 만든 상위 책을 선택할 수 있기를 바랍니다.다른 페이지에서 중첩 된 리소스 생성 레일

는 지금은 장 컨트롤러에 ...

protected 
def find_book 
    @book = Book.find(params[:book_id]) 
end 

을 가지고 있지만 이미 URL에서 책 ID 존재가있을 때 나는이 단지 작품을 생각합니다. 그래서 새로운 챕터를 만들려면 별도의 페이지에 챕터를 만들고 싶을 때 "rootpath/book/book_id/chapter/new"를 방문해야합니다.

문제에 접근하는 방법을 잘 모르겠지만 지금 계획은 중첩 된 리소스를 연결하는 장 만들기 페이지에 연관 (?) 양식을 넣는 것입니다.

문제는 웹 개발에 새로운 것이므로이 권한에 전혀 접근할지 잘 모르겠습니다. book_id를 장 컨트롤러로 전송하는 양식을 어떻게 넣을 수 있습니까? 이 방법이 전혀 효과가 있습니까? 더 효율적인 방법이 있습니까?

내 질문이 다소 모호 할 수도 있지만 실현 도움이 크게 감사하겠습니다!

답변

1

지루한 대답은 다음과 같습니다. 제안서는 중첩 된 경로에만 의미가 없습니다.

중첩 된 경로는 chapters#new 작업에 액세스 할 때 해당 장을 포함해야하는 책을 정확히 알고 있다는 것을 의미합니다.

밝은면 : 동시에 중첩 된 경로와 중첩되지 않은 경로를 모두 사용할 수 있습니다.

중첩 된 경로를 유지하면서 사용자가 챕터에 대해 원하는 장부를 선택할 수있는 newcreate 작업을 제공하는 경우 챕터 작성을 위해 중첩되지 않은 경로를 추가 할 수 있습니다. 예를 들어

: 당신의 컨트롤러가 듀얼 경로를 수용하기 위해 비트를 다시 작성해야 할 수 있습니다

resources :books do 
    resources :chapters 
end 
resources :chapters 

참고.

원하는 경우 동일한 페이지에서 두 자원을 모두 만들 수 있습니다. 이를 수행하려면 accepts_nested_attributes_for을 찾으십시오. 정말 쉽습니다. 한 번 해보시면됩니다.

+0

도움 주셔서 감사합니다. – jeebface