从js传递对象数组到rails

10

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

data.test = [{test: 'asdas'}]

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

Rails

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

这里的记录语句总是给我输出

{"0"=>{"test"=>"asdas"}}

我期待在Rails中看到以下的日志记录。

 [{:test=>"asdas"}] 

你解决了吗? - Xero
2个回答

6

在 JavaScript 中,应该使用 JSON.stringify 方法。它接受一个数组或哈希作为参数(因为这是唯一有效的 JSON 结构),并返回一个序列化为 JSON 的 JavaScript 对象。

在 Ruby 中,您将收到一个 JSON 编码的字符串,因此需要使用 require 'json'(在 Rails 中会自动执行),然后使用 JSON.parse(string) 方法将其解析为 Ruby 对象。


5

试试这个:

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。我还必须添加我的身份验证令牌。 - user1581404
这个答案有点过时了。你应该使用 Promise 代替 success 回调函数。 - Aetherus
这正是我在寻找的东西。这应该是被采纳的答案。 - Abhi

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