一次添加多个订单

时间:2014-05-18 08:58:18

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

我有一个Client可以订购Product表中列出的产品。我想以一个订单的形式显示所有产品。

同样如此:

product A: [amount]
product B: [amount]

客户可以将产品添加到每日订单中。所以我不需要捆绑所有产品,因为client_id和当天的时间戳足以捆绑它们。

我想要的是客户可以从产品列表中进行选择,并选择他希望按产品订购的金额。因此,对于每个产品,客户端都应该在数据库中添加新的订单行。

如何创建一个订单数组并将它们一起发送到我的订单表?

1 个答案:

答案 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

正如你所知,这有点棘手;所以我希望我们可以努力重构它以使其发挥作用