【发布时间】:2015-01-07 21:53:25
【问题描述】:
在我们的应用中,我们有以下三种模型:
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,它们基本上是一个产品和一些特定的产品变体。连接表 (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 才能像这样显示我的数据:(要隐藏的输入字段)
不知道如何继续。
【问题讨论】:
-
在您的
class Pack中输入了has_many :product, through: :pack_contents。应该是has_many :products, through: :pack_contents。是打字错误吗? -
是的,错字。我在应用程序中收到了
:products。会修复的。
标签: ruby-on-rails relationship simple-form nested-forms has-many-through