使用Ajax的Rails number_field

问题描述 投票:0回答:1

我有一个有多个字段的表单,代表一个订单项目。我试图确保对项目数量的更改能够实时保存。当订单项目通过link_to字段被完全删除时,我能够做到这一点。但对于数字字段,我无法做到同样的效果。

我为这两个字段编写的代码如下:

<%= order_item_form.number_field :quantity, update_quantity_path(:order_item_id => order_item.id, :quantity => order_item.quantity), remote: true, method: :patch, class: "form-control", min: 0 %>
<%= link_to 'Remove', update_quantity_path(:order_item_id => order_item.id, :quantity => 0), remote: true, method: :patch, class: "remove_fields" %>

所以在上面,link_to是有效的。当订单项被删除时,行为是正确的。但是对于数字字段,我得到了一个错误信息 wrong number of arguments (given 3, expected 1..2)

我到底做错了什么?我如何通过Ajax使number_field远程工作?

ruby-on-rails ajax ruby-on-rails-5
1个回答
1
投票

要做到这一点的方法是将这些数据属性添加到你的应用程序中。number_field:

<%= order_item_form.number_field :quantity, class: "form-control", min: 0, data: { remote: true, method: :patch, url: update_quantity_path(order_item_id: order_item.id, quantity: 0) } %>

请看一下 自定义远程元素 中段 在Rails中使用Javascript 指南以获得进一步的解释,并学习如何禁用输入字段,直到Ajax请求返回。


1
投票

该错误的出现是因为你在设置一个 path 作为参数之一的 number_field 方法。

文档告诉我们,当我们在表单构建器中使用该方法时,应该只有两个参数。

例子。number_field(method, options = {})

Rails API Doc: Number_field方法的链接

你应该在 data:

例子。

<%= order_item_form.number_field :quantity, data: { url: update_quantity_path(...), ... }, ... %>

这就消除了错误。

© www.soinside.com 2019 - 2024. All rights reserved.