【问题标题】:How to POST an array in Rails如何在 Rails 中发布数组
【发布时间】:2012-02-05 14:30:33
【问题描述】:

我想将数据作为 JSON 发布到控制器

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

然后我发帖说

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

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

但是,当我检索 params[:data] 时,我得到了一个哈希:

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

而不是数组!

所以我必须手动将哈希转换为数组。

有没有办法将确切的数组传递给控制器​​?

【问题讨论】:

  • 如果a是对象的集合,如果使用a.map(&:id)会怎样?
  • @ldiqual:很好!谢谢!!
  • @kishie:是的..但它仍然是手动的..

标签: jquery html ruby-on-rails


【解决方案1】:

我最近遇到了类似的问题。我的解决方法是发送 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'
       }
     );

【讨论】:

    【解决方案2】:

    您必须将 JSON 转换为字符串,但这可行:

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

    在控制器中,执行如下操作:

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

    【讨论】:

      猜你喜欢
      • 2021-11-03
      • 1970-01-01
      • 2014-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-12
      • 2016-09-12
      • 1970-01-01
      相关资源
      最近更新 更多