如何创建多个记录

时间:2013-12-25 00:43:15

标签: ruby-on-rails ruby ruby-on-rails-4

我有以下创建方法:

def new
   @stores = Store.where(:store_id => @store.id)
   @product = Product.new(id: @store.id)
end

def create

   @product = Product.new(product_params)
   @product.store_id = params["store_id"]

   if @product.save
     redirect_to table_products_path, notice: 'product was successfully created.' 
   else
     render action: 'new'
   end

end

和一个看起来像的表格:

<%= form_for [@table, @product] do |f| %>

  <% @stores.each do |store| %>
     <%= hidden_field_tag :store_id, store.id %>
     <%= f.label :product_price %><br>
     <%= f.text_field :product_price %>
  <% end %>

  <%= f.submit %>

<% end %>

和模特:

class Store < ActiveRecord::Base
  belongs_to :table
  has_many :products

end

class Product < ActiveRecord::Base
  belongs_to :store
end

基本上,对于每个商店,我想要创建一个产品。现在,唯一保存的product_price是最后一个。例如,如果有三个商店,我输入每个商店的product_price文本字段,它只保存最后一个。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您通过多个product_pricestore_id输入覆盖了表单字段。浏览器仅发送最后一个。 看看这个问题:Multiple objects in a Rails form

完成后,将控制器操作更改为以下内容:

Store.where(:store_id => @store.id).each do |store|
  Product.create(params[store.id][:product])
end

希望你明白这一点。