Rails number_field 和 Ajax
Rails number_field with Ajax
我有一个表单,其中有多个字段代表一个订单项。我试图确保实时保存对项目数量所做的更改。当通过 link_to 字段完全删除订单项时,我能够执行此操作。我无法对 number_field:
做同样的事情
我的2个字段的代码如下:
<%= 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 起作用了。删除订单项后,该行为是正确的。
但是对于 number_field,我得到了一个错误 wrong number of arguments (given 3, expected 1..2)
我做错了什么?如何让 number_field 与 Ajax 远程工作?
出现错误是因为您将 path
设置为 number_field
方法的参数之一。
文档告诉我们,当我们在表单构建器中使用该方法时,应该只有 2 个参数。
示例:number_field(method, options = {})
Rails API 文档:Link to number_field method
你应该在 data:
中使用这种类型的参数
示例:
<%= order_item_form.number_field :quantity, data: { url: update_quantity_path(...), ... }, ... %>
这消除了错误。
执行此操作的 rails 方法是将这些数据属性添加到您的 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) } %>
查看 Working with Javascript in Rails 指南中的 自定义远程元素 部分以获得进一步的解释,并了解如何在 Ajax 之前禁用输入字段请求 returns.
我有一个表单,其中有多个字段代表一个订单项。我试图确保实时保存对项目数量所做的更改。当通过 link_to 字段完全删除订单项时,我能够执行此操作。我无法对 number_field:
做同样的事情我的2个字段的代码如下:
<%= 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 起作用了。删除订单项后,该行为是正确的。
但是对于 number_field,我得到了一个错误 wrong number of arguments (given 3, expected 1..2)
我做错了什么?如何让 number_field 与 Ajax 远程工作?
出现错误是因为您将 path
设置为 number_field
方法的参数之一。
文档告诉我们,当我们在表单构建器中使用该方法时,应该只有 2 个参数。
示例:number_field(method, options = {})
Rails API 文档:Link to number_field method
你应该在 data:
示例:
<%= order_item_form.number_field :quantity, data: { url: update_quantity_path(...), ... }, ... %>
这消除了错误。
执行此操作的 rails 方法是将这些数据属性添加到您的 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) } %>
查看 Working with Javascript in Rails 指南中的 自定义远程元素 部分以获得进一步的解释,并了解如何在 Ajax 之前禁用输入字段请求 returns.