2011-01-02 3 views
4

다중 모델 양식을 작성하려고합니다.하지만 문제 중 하나는 양식 내에서 모델을 연결해야하는 것입니다. , 사용자 새 사용자를 만들 때, 나는 동시에 새 프로필을 만들려면 다음 두 가지를 연결 것중첩 모델 양식 만들기

프로파일 :

예를 들어, 내가 가지고있는 형태는 다음과 같은 모델을 가지고 말할 수 있습니다. 아직 ID가 생성되지 않은 경우 아직 ID가 없습니다. 링크 값을 할당하려면 어떻게해야합니까?

감사합니다.

내가 눈치

는, 어떤 사람들이 즐겨 찾기하는 -Elliot - 두 모델 연결에 대한 대답이 내 두 번째 질문 체크 아웃 더 볼 수 있습니다 : 원하는 결과를 달성하기 위해 Linking two models in a multi-model form

답변

5

한 가지 방법을 중첩 된 속성을 활용 양식을 정교하게 할 수 있다는 것입니다 레일에 지원합니다

<%= form_for(@user) do |f| %> 
    <%= f.label :my_user_attribute %> 
    <%= f.text_field :my_user_attribute %> 

    <%= f.fields_for :profile do |fp| %> 
    <p> 
     <%= fp.label :my_profile_attribute %> 
     <%= fp.text_field :my_profile_attribute %> 
    </p> 
    <% end %>  

    <%= f.submit %> 
<% end %> 

당신은 또한 당신의 사용자 클래스에 다음을 추가해야합니다

,
accepts_nested_attributes_for :profile 

활성 레코드 중첩 된 속성 here에 대해 자세히 읽을 수 있습니다. ActionView Form Helpers here에 대한 자세한 내용을 볼 수 있습니다 ("중첩 된 속성 예"페이지 검색).

두 모델 모두에서 좋은 유효성 검사와 함께이 접근법을 사용하면 두 모델 모두 ActiveRecord에 의해 동시에 만들어지기 때문에 데이터베이스 ID 추적에 대해 걱정할 필요가 없습니다 (두 모델 개체가 유효한).

+0

안녕 스콧, 답변 해 주셔서 감사합니다! 나는 정말로 당신이 게시 한 코드를 잘 모르겠다. 나는 그것을 시험해 보았다. 그리고 정의되지 않은 변수 나 메소드 'fp'오류가 발생했다. – Elliot

+0

Hi Elliot - 코드를 업데이트했습니다. 실수를했습니다. 폼 빌더 변수의 처음 몇 가지는 'fp'가 아니라 'fp'여야합니다 (라인 2 및 3이 업데이트 됨). 죄송합니다 - 너무 빨리 쓰는 중이었습니다! 본질적으로이 코드는 부모 - 자식 관련 객체에 대해 중첩 된 양식 입력 필드를 수행 할 수있게합니다. – Scott

+0

감사합니다. Scott! 내가 말했듯이 그것을 업데이트하고 form_for (@users)가 나타나지만 fields_for 프로필 섹션을 볼 때 숨겨져있는 것처럼 보입니까? – Elliot