我有一個購物車order_items
。 OrderItem
有一個product_id
和多個book_ids
。當我有多個order_items
即兩個產品時,Order.create
只接受第一個product_id
。Rails 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
?
這似乎什麼來創建一個字符串而不是整數 – jgrant
的是好的,我認爲你的目的。你仍然可以通過'string'使用'find'。 'ids = [「1」,「2」,「3」]' 'objects = SomeModel.find(ids)' – Aleksey
你總是可以使用'to_i'來確定它是一個'integer'。 'objects = SomeModel.find(ids.map(&:to_i))' – Aleksey