将对象数组从 js 传递到 rails

Posted

技术标签:

【中文标题】将对象数组从 js 传递到 rails【英文标题】:passing array of objects from js to rails 【发布时间】:2016-11-05 15:14:21 【问题描述】:

我正在尝试将一组对象从 js 传递到 rails

data.test = [test: 'asdas']

$.ajax(
  url: 'evaluate.json',
  data: data,
  success: function(data)
  ,
  dataType : "json"
);

导轨

def evaluate
   logger.info("#params.test")
end

这里的记录器语句总是把我输出为

"0"=>"test"=>"asdas"

我期待下面的登录rails。

 [:test=>"asdas"] 

【问题讨论】:

你解决了吗? 【参考方案1】:

试试这个:

data.test = [test: 'asdas']

$.ajax(
  url: 'evaluate.json',
  data: JSON.stringify(data),  // Explicit JSON serialization
  contentType: 'application/json',  // Overwrite the default content type: application/x-www-form-urlencoded
  success: function(data)
  ,
  dataType : "json"
);

【讨论】:

是的是的!这是我多年来一直在寻找的。谢谢。你说的和其他人没有说的是你需要'dataType'和'contentType'才能工作(或者我反正做了)以及字符串化的JSON。我还必须添加我的真实性令牌。 这个答案有些过时了。你应该使用 promise 而不是 success 回调。 这正是我想要的。这应该是公认的答案。【参考方案2】:

您应该在 javascript 中使用 JSON.stringify,它以数组或哈希作为参数(因为这些是唯一有效的 JSON 结构)。它返回一个表单,该表单是序列化为 JSON 的 Javascript 对象。

在 Ruby 端,您将收到一个 JSON 编码的字符串,因此您需要 require 'json'(这在 Rails 中自动完成)并使用 JSON.parse(string)。这将为您提供一个 Ruby 对象。

【讨论】:

以上是关于将对象数组从 js 传递到 rails的主要内容,如果未能解决你的问题,请参考以下文章

Rails:如何将对象数组的哈希转换为 json

将对象数组从 Ajax 函数传递到 Web 服务

将对象的嵌套数组列表从适配器传递到活动

vue js 无法将对象数组传递给组件

将对象数组从 PLSQL 传递到 Java 函数时出错

如何将数据从对象传递到javascript中的新数组?