如何在Rails中POST一个数组

10

我想要将一个数据以JSON格式POST给控制器。

在JavaScript中,数据是一个数组,例如a = [1,2]。

然后我发送POST请求,比如说:

$.post('user/data', {'data' : a})

在用户控制器中,我从params获取数据。

然而,当我检索params[:data]时,得到了一个哈希表:

{"0"=>1, "1"=>2}

我需要手动将哈希转换为数组。

有没有一种方法可以将确切的数组传递给控制器?


1
可能重复:https://dev59.com/Pmw15IYBdhLWcg3wxugh - ldiqual
如果a是对象的集合,使用a.map(&:id)会怎样? - Sergey Kishenin
@kishie:是的,但仍需手动操作。 - HanXu
2个回答

3
我最近也遇到了类似的问题。我的解决方案是发送json内容而不是默认的表单编码。

我使用了
 $.ajax(
 {
   type: "POST", 
   url: url, 
   data: JSON.stringify(data), 
   dataType: "json", 
   contentType: 'application/json'
 }
 );

在你的例子中,可以这样做:
$.ajax(
       {
         type: "POST", 
         url: 'user/data', 
         data: JSON.stringify({'data' : a}), 
         dataType: "json", 
         contentType: 'application/json'
       }
     );

1

你需要将JSON转换为字符串,但是这个方法可以实现:

/path/to/url?data[]=1&data[]=2&data[]=3

在控制器中,可以这样做:

params[:data].each_with_index do |data, index| 
   do_something_with_data
end

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接