2012-05-30 4 views
0

레일 3.2를 사용하고 있으며 대량 할당을 방지하려고합니다. 나는 부모 - 자식 관계가 있습니다.레일 부모 자식 폼 예 질량 지정 방지 예

class Parent < ActiveRecord:Base 
    has_many :children 
    attr_accessible :name 
end 
class Child < ActiveRecord:Base 
    belongs_to :parent 
    attr_accessible :title 
end 

내 routes.rb 하위 리소스에 상위 리소스 내에 중첩되어 있지 않습니다. 이제 new_child_path(@parent.id)으로 새 자녀를 만드는 링크가 있습니다. 이 localhost:3000/child/new?parent_id=1에 저를 지시하고 나는 new 행동에 결국 :

def new 
    @child = Child.new 
    @parent = Parent.find(params[:parent_id]) 
    @child.parent = @parent 
end 

내 질문은 : 어떻게 아이 엔티티 내 _form.html.erb를 작성? 나는 parent_id에 대해 f.hidden_field을 사용할 수 없습니다. 왜냐하면 저의 행동을 만들 때 대량 할당으로 인해 해체 될 것이기 때문입니다. 반면에 나는 아이를 구할 때 parent_id을 부모님과 알기 위해 전달해야합니다. 나는 이것을위한 훌륭한 실례를 발견하지 못했다.

답변

1

레일스의 중첩 된 리소스를 읽어야합니다.

일부 링크 :

http://railscasts.com/episodes/139-nested-resources

- EDIT 1 - 중첩 이상의 수준을 가지고 있지의 의견을 바탕으로

, 당신은 또한 다음과 같은 경로를 구성 할 수 :

resources :grandparents do 
    resources :parents 
end 

resources :parents do 
    resources :children 
end 

이렇게하면 여러 수준의 중첩없이 오버 헤드없이 부모 자식 관계를 유지할 수 있습니다. 또한 청결하게 유지하기 위해 컨트롤러를 네임 스페이스 수, 예를 들어,이 :

resources :grandparents do 
    resources :parents, :controller => "grandparent/parent" 
end 

resources :parents do 
    resources :children 
end 
+0

나는 http://guides.rubyonrails.org/routing.html#nested-resources 읽었다 그러나 나는 규칙을 따랐습니다 : 자원은 안 깊이가 1 단계 이상 중첩되어 있으므로 중첩 된 리소스가 삭제되었습니다. –

+0

@ TomaszKalkosiński 업데이트 된 답변. – zsquare

+0

이것은 책을 만드는 동안 내 URL에 parent_id가있는 문제를 해결합니다. 이 라우트 연습은 널리 퍼지지 않습니다. 고맙습니다. –