我有一个Client
可以订购Product
表中列出的产品。我想以一个订单的形式显示所有产品。
同样如此:
product A: [amount]
product B: [amount]
客户可以将产品添加到每日订单中。所以我不需要捆绑所有产品,因为client_id和当天的时间戳足以捆绑它们。
我想要的是客户可以从产品列表中进行选择,并选择他希望按产品订购的金额。因此,对于每个产品,客户端都应该在数据库中添加新的订单行。
如何创建一个订单数组并将它们一起发送到我的订单表?
答案 0 :(得分:0)
您需要将多个ids
从表单传递到控制器。要做到这一点,您可能必须违反惯例:
#app/views/orders/new.html.erb
<%= form_tag(orders_path), method: :post %> #-> should take to orders create method
<% @products.each_with_index do |i, product| %>
<%= product.name %><%= text_field "order[#{i}][#{product.id}]"
<% end %>
<% end %>
#app/controllers/orders_controller.rb
def create
if params[:order].kind_of?(Array)
for order in params[:order]
product = order.keys #-> outputs [array num, product_id]
new_order = Order.new(product_id: product[1], user_id: current_user.id, qty: order[1])
new_order.save #-> creates new row with product_id, user_id, qty
end
end
end
这里有一个很好的参考:Add multiple items to a cart at the same time
正如你所知,这有点棘手;所以我希望我们可以努力重构它以使其发挥作用