将对象数组从 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的主要内容,如果未能解决你的问题,请参考以下文章