Rails ujs以数组格式发送formData,而不是基于索引的对象



我试图使用formData和rails ujs将数据发送到我的rails服务器。前端js代码如下所示:

Rails.ajax({
url: "/reset-cart",
type: "post",
data: new FormData(this.formTarget),
success: function(data) { console.log('success') },
error: function(data) { console.log('error') }
})

`Object.fromEntries(new FormData(this.formTarget))` returns 
{
cart[cart_items_attributes][0][product_id]: "210"
cart[cart_items_attributes][0][quantity]: "4"
cart[cart_items_attributes][1][product_id]: "12"
cart[cart_items_attributes][1][quantity]: "4"
}

在我的rails控制器中,我接收这样格式化的数据:

#<ActionController::Parameters {"cart"=>{"cart_items_attributes"=>{"0"=>{"product_id"=>"210", "quantity"=>"4"}, "1"=>{"product_id"=>"12", "quantity"=>"4"}}}, "controller"=>"carts", "action"=>"reset"} permitted: false>

我希望数据看起来更像:

{
"cart"=> {
"cart_items_attributes"=> [
{
"product_id"=>"210", 
"quantity"=>"4"
},{
"product_id"=>"12",
"quantity"=>"4"
}
]
}
}

其中cart_items_attributes是一个哈希数组。是否有一种方法可以通过改变我在Rails.ajax函数中发送数据的方式来实现这一点,或者我必须在控制器中编写一个自定义方法来重新格式化我在参数哈希

中接收的数据

我已经使用了这个jQuery插件来做到这一点,我还没有找到一个例子,任何人做香草虽然。

https://github.com/marioizquierdo/jquery.serializeJSON

相关内容

  • 没有找到相关文章

最新更新