Rails / Coffeescript,数组中的数据没有被传递属性

时间:2016-02-24 19:50:00

标签: jquery ruby-on-rails ajax coffeescript

拥有以下Ajax请求:

data = {foo: {id: 1}, 
        array: [
                {id: 2, date: "Jan  1, 2015", quantity: 100}
               ]}

$.ajax "/api/foo",
  type: "POST",
  dataType: "JSON"
  data: data,
  success: (data) ->
    console.log(data)

问题是服务器获得以下参数:

{foo: {id: 1}, 
 array: { 
         0:{id: 2, date: "Jan  1, 2015", quantity: 100}
 }}

正如您所看到的,数组被转换为具有增量键的哈希。为什么我发送的数据没有收到?

1 个答案:

答案 0 :(得分:1)

根据AJAX docs,这是预期的行为。

  

数据

     

键入:PlainObject或String或Array

     

要发送到服务器的数据。如果不是字符串,它将转换为查询字符串。它附加到GET请求的URL。请参阅processData选项以防止此自动处理。对象必须是键/值对。如果value是一个数组,jQuery会根据传统设置的值使用相同的键序列化多个值(如下所述)。

您可以使用traditional params[:array][0]设置来尝试获得完全相同的表示形式,但您应该能够原样使用它。

在您的控制器中,您应该能够执行以下params[:array].each ...array: { 0:{id: 2, date: "Jan 1, 2015", quantity: 100} 1:{id: 3, date: "Jan 1, 2015", quantity: 200} 2:{id: 4, date: "Jan 1, 2015", quantity: 300} } 来访问数据。你仍然得到Ruby可以像数组一样处理的响应。如果此数组中有更多记录,它将如下所示。

var_dump($GLOBALS['pagination']);