0

以下のコードを動作させるのに問題があります。

  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 のフィールドを表示します。

新しいアクションでは問題なく動作しますが、編集アクションでは正しく表示されません。

どんな助けでも大歓迎です。

前もって感謝します

4

1 に答える 1

0

このフォームで新しい page_parts を作成しています:

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 やその他のフォーム ヘルパーに関する優れたドキュメントがあります。

于 2012-06-28T16:35:58.747 に答える