我有以下创建方法:
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文本字段,它只保存最后一个。
感谢您的帮助!
答案 0 :(得分:1)
您通过多个product_price
和store_id
输入覆盖了表单字段。浏览器仅发送最后一个。
看看这个问题:Multiple objects in a Rails form
完成后,将控制器操作更改为以下内容:
Store.where(:store_id => @store.id).each do |store|
Product.create(params[store.id][:product])
end
希望你明白这一点。