在我的应用程序中,有一个带有has_many order_items的订单模型。
订购页面:
<div id="cart-rows">
<% @order_items.each do |order_item| %>
<%= render 'orders/cart_row', product: order_item.product, order_item: order_item %>
<% end %>
</div>
cart_row partial(每个order_item):
<div class="cart-row col-xs-12" id="order-item-<%= order_item.id %>">
<h3><%= product.name %></h3>
<div class="col-md-9 col-sm-8 col-xs-9 cart-form-wrapper">
<%= form_for order_item, remote: true do |f| %>
<%= f.text_field :color_quantity, value: order_item.color_quantity.to_i,
min: 0, class: "form-control cart-quantity" %>
<h4>
x <%= order_item.var_price("color") %>
<i class='glyphicon glyphicon-ruble'></i>
</h4>
<% if order_item.color_quantity > 0 %>
<h4>
= <%= order_item.color_quantity * order_item.var_price("color") %>
<i class='glyphicon glyphicon-ruble'></i>
</h4>
<% end %>
<%= f.hidden_field :product_id, value: product.id %>
<%= f.submit "", class: "btn-hidden submit-cart-row" %>
<h4>
Total: <%= order_item.item_total %>
<i class='glyphicon glyphicon-ruble'></i>
</h4>
<% end %>
</div>
在每一行中都有一个表格,其中包含每种产品的类型和数量。 当表单提交时,当前cart_row中的信息(每种类型的总价格及其数量)将使用jquery重新计算:
$(document).ready(function() {
$('.cart-quantity').blur(function() {
$(this).closest("form").submit();
});
});
我想每次在场模糊时提交它。
问题是它可以工作但仅适用于第一次模糊。当我改变另一个领域并模糊时,没有任何反应。否则,如果我正常点击输入表格更新。
我在控制台中没有看到任何错误。服务器日志为空,因为没有任何反应:on blur动作不会触发。它必须是一些javascript错误,但我无法追踪它。
订单商品控制器:
class OrderItemsController < ApplicationController
before_action :set_order
before_action :set_order_item, only: [:update, :destroy]
def create
@order_item = @order.order_items.new(order_item_params)
@order.save
session[:order_id] = @order.id
end
def update
@order_item.update_attributes(order_item_params)
@order_items = @order.order_items
end
def destroy
@order_item.destroy
@order_items = @order.order_items
end
private
def set_order
@order = current_order
end
def set_order_item
@order_item = @order.order_items.find(params[:id])
end
def order_item_params
params.require(:order_item).permit(:color_quantity, :high_quantity, :spec_quantity, :product_id)
end
end
谢谢。
答案 0 :(得分:0)
我找到了导致错误的原因。
我正在使用一种草率的方法更新购物车部分,类似于
$(".shopping-cart").load(document.URL + ' .shopping-cart');
所以这是一个原因。