2012-03-26 1 views
0

답변이 되었으면 용서해주십시오. 나는 여기와 Google에 대한 답변을 찾기 위해 몇 시간을 보냈다.중첩 된 속성을 사용하는 양식을 제출 한 후 API의 응답으로 모델을 업데이트하십시오.

저는 Ruby on Rails를 시작했습니다. 원래 두 가지 모델로 양식을 통해 제출 된 데이터를 저장 한 후 API 응답의 데이터로 모델을 업데이트하려고합니다.

기본적으로 나는 User 모델과 Character 모델을 가지고 있습니다. 가입 양식은 사용자와 그 캐릭터의 데이터를 수집합니다. API 요청을하려면 적어도 요청한 속성 (이름, 영역)의 일부로 전달할 문자에 대한 몇 가지 세부 정보를 얻어야합니다.

그래서 나는 중첩 된 속성을 가지는 form_for을 사용하고 있습니다 :

<%= form_for(@user) do |f| %> 
     <%= render 'shared/error_messages' %> 

     <%= f.label :username %> 
     <%= f.text_field :username %> 

     <%= f.label :first_name %> 
     <%= f.text_field :first_name %> 

     <%= f.label :last_name %> 
     <%= f.text_field :last_name %> 

     <%= f.label :email %> 
     <%= f.text_field :email %> 

     <%= f.label :password %> 
     <%= f.password_field :password %> 

     <%= f.label :password_confirmation, "Password Confirmation" %> 
     <%= f.password_field :password_confirmation %> 

     <%= f.fields_for :characters do |builder| %> 

     <%= builder.label :realm %> 
     <%= builder.text_field :realm %> 

     <%= builder.label :name %> 
     <%= builder.text_field :name %> 

     <% end %> 

     <%= f.submit "Sign Up" %> 
<% end %> 

이 성공적으로 사용자 모델과 캐릭터 모델에 제출 영역과 이름을 제출 한 사용자 정보를 모두 제출합니다. 거기에 문제 없습니다. 그러나 모든 문자 정보를 제공하는 API에서 방금 작성한 문자 레코드를 채우고 싶은 필드가 몇 개 더 있습니다. 양식을 제출 한 후 API에서 다시 오는 데이터로 레코드를 업데이트하거나 레코드를 저장하기 전에 데이터를 추가하도록 가장 효율적인 방법은 무엇입니까?

특정 필드와 데이터에 대한 도움이 필요하지 않습니다. 모든 기능이 작동합니다. 양식을 제출하자마자 API 요청을하고 모든 데이터로 레코드를 완료하는 방법을 찾고 있습니다.

답변

0

콜백 (: after_create) 사용을 제안합니다.

API 처리에 따라 선택할 수 있습니다. : before_save : 어떤 콜백 before_create

당신의 API에서 데이터를 얻을 수 및 다른 문자 정보의 채우기 after_save.

희망이 있습니다. 행운을 빕니다 .

+0

좋아요, 시도해 보겠습니다 (: before_save). 상위 모델에서이를 구현합니까? 또한 콜백 함수에 사용할 중첩 된 폼 데이터에 어떻게 액세스합니까? – Valjas

+0

예, 부모 모델에서이를 구현할 수 있으며 레일의 연관성 기능으로 하위를 생성 할 수 있습니다. 간단히 살펴보십시오. http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html – Vik

+0

감사합니다. Vik! .last 메서드를 사용하여 레코드를 업데이트하기 위해 콜백 (after_save)을 사용하여 모든 것을 알아낼 수있었습니다. 당신이 저에게 준 링크는 매우 유익했습니다. 그것은 협회가가는 한 내가 찾고 있었던 바로 그 것이다. – Valjas

관련 문제