我有一个包含项目和数量选择表格的索引页面。
该表单适用于创建(a.k.a。第一次点击)。问题是,如果我再次点击它,它只是更新购物车而不是将该数量添加到line_item
。如果这是我唯一的问题,我可以自己解决。
真正的问题是我有另一种表格在结账前更新。它看起来像这样:
我希望这是主数量控制,因此无论以何种形式进行更新,数量都是多少。但是对于第一批图像,我希望将数量添加到@line_item
的数量中,所以我不能只创建一个只将新旧数量加在一起的方法,这就是我开始做的事情,直到我意识到我无法做到这一点。
我是否需要在控制器中进行新操作? 这会是一个什么样的工作?
答案 0 :(得分:1)
查看你的问题
The problem is, if I click it again, it's just updating the cart instead of adding that quantity to the line_item
问题在于您的提交按钮 Add to Cart
,它会将其带到购物车的创建操作,从而在购物车内创建新商品
Do I need to make a new action in the controller?
我的回答是肯定的。您需要使用发布路径请求(查找该项目)进行新操作,然后在该操作中更新其数量。
What would be the work around for this?
如果您查看按钮或者我应该说表单来创建新项目,那么它就是您表单中的路径或网址它是你控制器内的方法。如果您更改其网址,则会将其转到您的自定义方法。
<强>修正强>
用户单击“添加到购物车”按钮后,您只需要动态更改网址或表单即可。类似的东西:
$(document).on("click","your_button_class",function(){
$(this).closest("your_form_class").attr("action","path_of_new_method");
});
您还必须通过添加隐藏字段或其他内容来提供项目ID ,然后在控制器方法中找到该项目并使用该ID更新其数量。
注意:您需要在提交表单并且已经创建新项目后调用此js,否则可能会给您带来麻烦。