我想将数据作为JSON发布到控制器
在javascript中,数据是一个数组,例如a = [1,2]
然后我发帖,说
$.post('user/data', {'data' : a})
在用户控制器中,我从params获取数据。
然而,当我检索params [:data]时,我得到了一个哈希:
{"0"=>1, "1"=>2}
而不是数组!
所以我必须手动将哈希转换为数组。
是否有将精确数组传递给控制器的方法?
答案 0 :(得分: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 :(得分:1)
你必须将JSON转换为字符串,但这可以工作:
/path/to/url?data[]=1&data[]=2&data[]=3
在控制器中,执行以下操作:
params[:data].each_with_index do |data, index|
do_something_with_data
end