2

레일 폼 빌더 (또는이 경우에는 simple_form)를 사용하여 오브젝트에 액세스하는 방법에 대해 머리를 쓰려고합니다.simple_fields_for form_builder.object가 새 객체를 반환합니까?

나는과 같이 http://apidock.com/rails/ActionView/Helpers/FormHelper/fields_for에 설명 된대로 객체를 전달 : 나는 부분 내부 f.object를 호출 할 때

- @document.sections.each do |section| 
    = f.simple_fields_for :sections, section do |section_form| 
    = render 'section_fields', :f => section_form 

는 그러나, 나는 등등 '새로운'섹션 개체 포함 전무 ID를 얻을 내 LINK_TO을 깨는 통로. 부분 내측 정의 foo를 갖는

- @document.sections.each do |section| 
    = f.simple_fields_for :sections, section do |section_form| 
    = render 'section_fields', :f => section_form, :foo => section 

:

심지어 이와 같이, '표준'방식 끊어진 것으로 보인다 변수 전달.

fields_for has_many 연관을 사용하여 양식을 작성하는 대상 객체에 액세스하려면 어떻게해야합니까?

답변

0

그것은 코쿤 방법 'link_to_add_association은'f.object을 포함 LINK_TO을 위반 한 새로운 객체를 생성하는 것을 밝혀 그 시점에서 그 대상이 분명히 존재하지 않았기 때문이다.

단순히 'f.object.new_record가 아닌 경우'를 추가하십시오. ' Cocoon이 생성하는 새로운 (숨겨진) 레코드를 무시합니다.

0

난 당신이 관련된 객체를 구축하고 이런 식으로 코드를 변경할 필요가 있다고 생각 :

- @document.sections.build if @document.sections.empty? 
    = f.simple_fields_for :sections, @document.sections do |section_form| 
    = render 'section_fields', :f => section_form 
+0

나는 이것을 link_to_add_association을 통해 생성 된 현재 객체의 양식을 표시하는 데만 사용하고 있으므로 section_form.object는 절대로 'new'또는 nil 객체가 아닙니다. 나는 form.object가 폼의 객체가 아니라 그 폼의 클래스에 대한 객체를 반환한다고 생각하기 시작했다. 그렇다면 평소처럼 부분에 값을 전달할 수 없을 때 어떻게 다른 방법으로 실제 객체를 얻을 수 있습니까? – HaaR