簡體   English   中英

Rails中的form_for迭代在創建時添加了模型的所有實例

[英]Iteration in Rails form_for is adding all instances of model on create

我有一個OrderItems ,連接表OrderItems充當訂單中的訂單項。 order#show ,我想要顯示Items所有實例,並能夠通過創建新的OrderItem將其添加到訂單中。 問題是,當我發布表單時, order_item#create為所有Items order_item#create 40個新的order_items ,而不僅僅是為我要添加的一項創建OrderItem一個實例。

這是OrderItems控制器:

def create
    @order_item = @order.order_items.build(order_item_params)

    if @order_item.save
        flash[:notice] = "Your item was added"
        redirect_to [@user, @order]
    else
        flash[:error] = "Your item was not added. Please try again."
        redirect_to [@user, @order]
    end
end

這是order#show的表格

<% @items.each do |item| %>
    <div>
        <%= form_for [@user, @order, @order.order_items.create(:item_id => item.id)] do |f| %>
            <div class="form-group">
                <%= f.label item.name %>
                <%= f.label "$#{item.price.to_s}" %>
            </div>
            <div class="form-group">
                <%= f.label 'quantity' %>
                <%= f.text_area :quantity %>
            </div>
            <div class="form-group">
                <%= f.label 'item id' %>
                <%= f.text_area :item_id %>
            </div>
            <div class="form-group">
                <%= f.submit 'Add Item', class: 'btn' %>
            </div>
        <% end %>
    </div>
<% end %>

實際上, order_item#create操作不是創建40個order_items 這是您的表格:

<%= form_for [@user, @order, @order.order_items.create(:item_id => item.id)] do |f| %>

create更改為build ,這樣就不會保存40個實例。 它只會保存您點擊提交的那一個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM