我试图使用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