将对象数组从js传递给rails

时间:2016-07-03 23:59:24

标签: javascript ruby-on-rails ruby ajax get

我正在尝试将一个对象数组从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"}}

我期待以下登录栏。

 [{:test=>"asdas"}] 

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:3)

试试这个:

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"
});