2016-06-23 48 views
1

我有一個購物車order_itemsOrderItem有一個product_id和多個book_ids。當我有多個order_items即兩個產品時,Order.create只接受第一個product_idRails 4將多個參數傳遞給控制器​​

結賬形式:

<%= form_tag charges_path do %> 
    <h4><% current_order.subtotal %></h4> 
    <div class="form-group"> 
    </div> 
    <script 
     class='stripe-button' 
     src="https://checkout.stripe.com/checkout.js" 
     data-key="<%= @stripe_btn_data %>" 
     data-amount=<%= current_order.subtotal %> 
     data-description="<%= @order_items.count %>" 
     data-shipping-address="true" 
     data-billing-address="<%= @stripe_btn_data %>" 
    ></script> 
    <% @order_items.each do |oi| %> 
     <%= hidden_field_tag :product_id, oi.id %> 
     <% end %> 
    <% end %> 

Order.create內部ChargeController

def create 

@product = Product.find(params[:product_id]) 

Order.create(
    user: current_user, 
    stripe_billing_name:     params[:stripeBillingName], 
    stripe_shipping_name:     params[:stripeShippingName], 
    stripe_authenticity_token:   params[:authenticity_token], 
    stripe_email:       params[:stripeEmail], 
    stripe_billing_address_country_code: params[:stripeBillingAdressCountryCode], 
    stripe_shipping_address_country_code: params[:stripeShippingAdressCountryCode], 
    stripe_shipping_address_country:  params[:stripeShippingAdressCountry], 
    stripe_billing_address_country:  params[:stripeBillingAdressCountry], 
    billing_address:      params[:stripeBillingAddressLine1], 
    billing_city:       params[:stripeBillingAddressCity], 
    billing_state:      params[:stripeBillingAddressState], 
    billing_zip:       params[:stripeBillingAddressZip], 
    shipping_address:      params[:stripeShippingAddressLine1], 
    shipping_city:      params[:stripeShippingAddressCity], 
    shipping_state:      params[:stripeShippingAddressState], 
    shipping_zip:       params[:stripeShippingAddressZip], 
    product_id:       params[:product_id] 
end 

爲1的product_id和2,I得到的product_id 2.
最終結果 如何在Order.create上獲得全部product_ids

回答

1

我想你可以嘗試這樣的事情

<% @order_items.each do |oi| %> 
    <%= hidden_field_tag 'product_ids[]', oi.id %> 
<% end %> 
+0

這似乎什麼來創建一個字符串而不是整數 – jgrant

+0

的是好的,我認爲你的目的。你仍然可以通過'string'使用'find'。 'ids = [「1」,「2」,「3」]' 'objects = SomeModel.find(ids)' – Aleksey

+0

你總是可以使用'to_i'來確定它是一個'integer'。 'objects = SomeModel.find(ids.map(&:to_i))' – Aleksey

0

<% @order_items.each do |oi| %> 
    <%= hidden_field_tag 'product_ids[]'.to_i, oi.id %> 
<% end %> 
相關問題