ruby-on-rails - 从购物车更新或删除项目?
问题描述
我管理客户的订单。我的Order
表已连接到模型Cart
。该模型Cart
连接到给出关联表的模型,该关联Product
表包括、和。但是对于,我想将选项添加到. 我遇到了一个阻塞 - 更准确地说是在最后我显示元素列表的视图中,如下所示Many to Many
line_items
id_cart
id_product
quantity
Cart
update
delete
Cart
Order
Cart
<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_id
和qte
不属于模型,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
解决方案
推荐阅读
- vim - 设置使用“gf”命令的文件路径
- git - 在 git 中,在将子文件夹转换为子模块的同时,还保留移动到目标文件夹中的文件的历史记录
- amazon-sqs - 并非所有消息都从 GetStream.io 转发到 SQS
- javascript - 强制 HTML5 画布使用软件渲染
- typescript - 财产的打字员
- c# - 尝试将模拟数据库“播种”到模拟 dbContext 时出错
- reactjs - 为什么在 Rebass Box 组件上使用 prop.children 会在 Chrome 中输出 console.error?
- java - 如何在 Java 中实现检查构建器模式
- optimization - 为什么梯度 descnet 不后退以避免振荡
- c++ - 为什么允许 C++ 引用构造函数中的临时变量?