首页 > 解决方案 > 从购物车更新或删除项目?

问题描述

我管理客户的订单。我的Order表已连接到模型Cart。该模型Cart连接到给出关联表的模型,该关联Product表包括、和。但是对于,我想将选项添加到. 我遇到了一个阻塞 - 更准确地说是在最后我显示元素列表的视图中,如下所示Many to Manyline_itemsid_cartid_productquantityCartupdatedeleteCartOrderCart

<h3> Order Details </ h3>
<table class = "table-bordered table">
  <td> Designation </ td> <td> Quantity </ td> <td> Price </ td> </ tr>
  <% order.cart.line_items.each do | item | %>
    <tr align = "center">
      <td> <% = f.text_field: product_id,: value => item.product.title,: readonly => true, class: 'form-control'%> </ td>
      <td> <% = f.text_field: qte,: value => item.qte, class: 'form-control'%> </ td>
      <td> <% = number_to_currency (product.inc.unit, unit: "F", separator: ",", format: "% n% u")%> </ td>
    </ Tr>
  <% end%>
</ Table>

在那里,我将拥有具有默认值的字段文本字段,客户订购的内容允许修改。但问题是属性product_idqte不属于模型,order而是更早于模型line_items,所以我将无权插入:

unpermitted parameters: :product_id, :qte

我什至尝试这种方法accepts_nested_attributes_for,我将获得许可。但是事务不会提交而是回滚。

感谢您帮助我解决这个阻止我好几天进步的错误

提交的参数看起来像这样

    <%= form_with(model: order,:remote => true)  do |f| %>
<div class="content">
<div class="container-fluid">
  <div class="row">
      <div class="col-md-12">
          <div class="card">
      <div class="header">
          <h4 class="title"> Edite Order</h4>
      </div>

      <div class="content">
          <div class="row">
            <!--  Order Reference-->
              <div class="col-md-5">
                  <div class="form-group">
                      <label><%= f.label :ref,"Reference Order "%></label>
                      <%= f.text_field :ref, :value => "ABC-123-NY#{@order.id}",:readonly => true,class: ' form-control' %>
                  </div>
              </div>
              <!-- Supplier List -->
              <div class="col-md-5">
                  <div class="form-group">
                      <label><%= f.label :supplier_id,"Fournisseur"%></label>
                      <%=f.collection_select :supplier_id,Fournisseur.all,
                    :id,:namefrs,{required: true},id:"listfrs",class: 'form-control'%>
                  </div>
              </div>
              <!-- boutton update -->
              <div class="col-md-2">
                  <div class="form-group">
                       <%= f.submit 'Modifier',:name => "valid",:class => 'btn btn-info btn-fill pull right'%>
                  </div>
              </div>


             </div>
         </div>
       </div>

       <div class="card">
      <div class="content">
          <div class="row">
            <!-- Date Order -->
              <div class="col-md-5">
                  <div class="form-group">
                      <label><%= f.label :date_order,"Date"%></label>
                      <%= f.date_select :date_order, label: false, placeholder: "Sélectionnez la date et l'heure",class: 'form-control'%>
                  </div>
              </div>
             </div>
         </div>
       </div>

      </div>
    </div>
</div>
</div>

      <div class="col" id="cart">
              <h3>Order</h3>
    <table class="table table-bordered">
    <tr align="center" class="h4">
    <td>Designation</td>
    <td>Quantity</td>
    <td>Price</td>
    </tr>

    <% order.cart.line_items.each do |item| %>
    <tr align="center">

        <td><%= f.text_field :product_id,:value => item.product.title,:readonly => true,class: 'form-control'%></td>
        <td><%= f.text_field :qty, :value=>item.qty ,class: 'form-control' %></td>
        <td><%= number_to_currency(item.product.price, unit: "F",separator:",",format:"%n %u")%></td>
    </tr>


<% end %>
   </table>
      </div>

    <% end %>

我在我的控制器订单中有这个

def update
    respond_to do |format|
      @order.cart.line_items.each do |item|
        item.qty = params[:qty]
      end
      format.html { redirect_to @order, notice: 'Order was successfully updated.' }
    end
  end

标签: ruby-on-railsruby

解决方案


推荐阅读