У меня проблема с получением кода ниже, чтобы работать.fields_for for has_many через отношения 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.
Он работает отлично для нового действия, но для действия редактирования он отображается неправильно.
Любая помощь очень ценится.
Заранее спасибо
Спасибо @salil за ваше время, но с помощью вашего решения возникли две проблемы: - 1) Форма отправила только один экземпляр page_parts_pages, тогда как она должна быть двух. 2) Возникла ошибка Невозможно назначить защищенные атрибуты: page_parts_page, page_part. После преодоления этой ошибки приложение подняло «неизвестный атрибут page_parts_page» – vikram
Отредактировал мой ответ. Я думаю, если вы знаете, что делает field_for, вы найдете правильный способ реализовать свою форму. – Salil
Я попробую отредактированный ответ. И также, это будет здорово для меня, если вы поделитесь некоторыми ссылками, где я могу понять fields_for лучше – vikram