0

코드가 작동하지 않는 데 문제가 있습니다.fields_for for has_many for relationship rails 3

class Page < ActiveRecord::Base 
    has_many :page_parts, :through => :page_parts_pages 
    has_many :page_parts_pages 
    accepts_nested_attributes_for :page_parts, :allow_destroy => true 
    accepts_nested_attributes_for :page_parts_pages, :allow_destroy => true 
    end 

    class PagePart < ActiveRecord::Base 
    has_many :page_parts_pages 
    has_many :pages, :through => :page_parts_pages 
    end 

    class PagePartsPage < ActiveRecord::Base 
    belongs_to :page 
    belongs_to :page_part 
    end 

테이블 구조 : -

pages 
     id, title 

    pages_parts 
     id, title 

    page_parts_pages 
     id, page_id, page_part_id 

보기 코드

<% page_fragment.each do |k,v| %> 

    <% if v.nil? or v.blank? or v.empty? %> 

     <% parts = f.object.page_parts.build if f.object.page_parts.blank? %> 

     <%= f.fields_for :page_parts, parts do |p| %> 

     <%= render 'page_part_form_field', :f => p %> 

     <% end %> 

     <% else %> 

     <% parts_page = f.object.page_parts_pages.build if f.object.page_parts_pages.blank? %> 

    <%= f.fields_for :page_parts_pages, parts_page do |p| %> 

     <%= render 'page_part_page_form_field', :f => p %> 

    <% end %> 

    <% end %> 

<% end %> 

사실 시나리오는 내가 조건을 기준으로 page_parts 및 page_parts_pages에 대한 필드를 표시해야합니다. 조건이 충족되면 page_parts에 대한 표시 필드는 page_parts_pages에 대한 필드를 표시합니다.

새로운 작업에는 문제가 없지만 편집 작업에는 올바르게 표시되지 않습니다.

도움이 매우 감사합니다. 당신은이 양식의 새로운 page_parts를 작성하는 사전

답변

0

감사 :

parts = f.object.page_parts.build if f.object.page_parts.blank? 
parts_page = f.object.page_parts_pages.build if f.object.page_parts_pages.blank? 

'빌드'새 개체를 만듭니다

(그것이 비록 데이터베이스에 지속되지 않습니다). 그래서 새로운 것은 아니지만 편집을 위해서는 작동하지 않습니다. 이 시도 할 수 있습니다 :

<% page_fragment.each do |k,v| %> 
    <% if v.blank? %> 
     <%= f.fields_for :page_parts do |p| %> 
     <%= render 'page_part_form_field', :f => p %> 
     <% end %> 
     <% else %> 
    <%= f.fields_for :page_parts_pages do |p| %> 
     <%= render 'page_part_page_form_field', :f => p %> 
    <% end %> 
    <% end %> 
<% end %> 

rails api이 forms_for 및 다른 형태의 헬퍼의 꽤 좋은 문서가있다.

+0

시간 내 주셔서 감사합니다 @salil,하지만 솔루션을 사용하여 두 가지 문제가 발생했습니다 : - 1) 양식은 page_parts_pages의 단 하나의 인스턴스를 게시했지만 두 개가 있어야합니다. 2) 오류가 발생했습니다. 보호 된 속성을 대량 할당 할 수 없습니다 : page_parts_page, page_part. 이 오류를 극복 한 후 응용 프로그램에서 "unknown attribute page_parts_page"를 발생했습니다. – vikram

+0

내 대답을 편집했습니다. fields_for이 무엇인지 알면 양식을 구현하는 올바른 방법을 찾을 수있을 것으로 생각합니다. – Salil

+0

나는 편집 된 답을 시도 할 것이다. 그리고 내가 필드를 잘 이해할 수있는 링크를 공유한다면 나에게도 좋을 것이다. – vikram