深层嵌套表单属性的总和
sum of deep nested form attributes
rails4+茧
一点背景:
orders has_many order_products
order_products has_many product_sizes
在 after_save 调用中,我想获得所有产品的总数量。我在 order_product
模型中有一个名为 total_qty
的数据库列。所以在这张照片中,总数是 37.
订单
= f.simple_fields_for :order_products do |order_product|
= render 'order_product_fields', :f => order_product
= link_to_add_association 'Add Product', f, :order_products
order_product_fields
= f.simple_fields_for :product_sizes do |product_size|
= render 'product_size_fields', :f => product_size
= link_to_add_association 'Add Size', f, :product_sizes
product_size_fields
<div class="row nested-fields">
= f.input :size_name, :collection => Order::SIZES, label: false, include_blank: false
= f.input :qty, label: false, class: "<%= product_sizes.index %>"
= link_to_remove_association f, class: 'btn btn-danger' do
.glyphicon.glyphicon-remove
</div>
我最终深入挖掘并在脑海中找到了答案。
product_size.rb
def size_qty
qty
end
order_product.rb
def total_size_qty
product_sizes.map do |ps| ps.size_qty end
end
order.rb
def total_order_product_qty
order_products.map do |os| os.total_size_qty end
end
rails4+茧
一点背景:
orders has_many order_products
order_products has_many product_sizes
在 after_save 调用中,我想获得所有产品的总数量。我在 order_product
模型中有一个名为 total_qty
的数据库列。所以在这张照片中,总数是 37.
订单
= f.simple_fields_for :order_products do |order_product|
= render 'order_product_fields', :f => order_product
= link_to_add_association 'Add Product', f, :order_products
order_product_fields
= f.simple_fields_for :product_sizes do |product_size|
= render 'product_size_fields', :f => product_size
= link_to_add_association 'Add Size', f, :product_sizes
product_size_fields
<div class="row nested-fields">
= f.input :size_name, :collection => Order::SIZES, label: false, include_blank: false
= f.input :qty, label: false, class: "<%= product_sizes.index %>"
= link_to_remove_association f, class: 'btn btn-danger' do
.glyphicon.glyphicon-remove
</div>
我最终深入挖掘并在脑海中找到了答案。
product_size.rb
def size_qty
qty
end
order_product.rb
def total_size_qty
product_sizes.map do |ps| ps.size_qty end
end
order.rb
def total_order_product_qty
order_products.map do |os| os.total_size_qty end
end