В нашем приложении, у нас есть, среди прочего, эти три модели:рендеринга вложенных полей формы в Rails
class PackContent < ActiveRecord::Base
belongs_to :product
belongs_to :pack
class Product < ActiveRecord::Base
has_many :pack_contents
has_many :packs, through: :pack_contents
class Pack < ActiveRecord::Base
has_many :pack_contents
has_many :products, through: :pack_contents
accepts_nested_attributes_for :pack_contents
Пакет имеет несколько pack_contents, которые в основном продукт и некоторые специфические productvariants. Таблица присоединиться (pack_contents) выглядит следующим образом:
Я сейчас пытаюсь отобразить эти pack_contents в работоспособной манере, но продолжаю работать в стену.
Я попытался:
.pack-product-rows
- @pack.pack_contents.each do |pc|
= f.simple_fields_for pc do |p|
= render :partial => 'pack_product_row', :locals => { :p => p, :pc => pc }
Но тогда, по экономии, я получаю сообщение об ошибке сказав:
ActiveRecord::UnknownAttributeError in Admin::PacksController#update
unknown attribute: pack_content
И атрибуты имя поля формы являются неправильными, они не учитывают кратному поскольку они не содержат индекс.
Когда я пытаюсь это:
.pack-product-rows
- @pack.pack_contents.each do |pc|
= f.simple_fields_for :pack_contents do |p|
= render :partial => 'pack_product_row', :locals => { :p => p, :pc => pc }
Это делает каждый частичный дважды, что, я полагаю, следует ожидать.
Если я не зацикливаюсь на содержимом и просто использую simple_fields_for, я получаю вывод, который я хочу, но не так, как я этого хочу. Я могу визуализировать поля с p.input_field :id
и любит, но мне нужен доступ к pack_contents для того, чтобы показать мои данные, как это: (поля ввода предназначены быть скрыты)
Не уверен, как поступить.
В вашем «пакете классов» вы набрали 'has_many: продукт через:: pack_contents'. Это должно быть 'has_many: продукты, через:: pack_contents'. Это была типичная ошибка? –
Да, опечатка. Я получил ': products' в приложении. Починю. – cabaret