passing array of objects from js to rails

社会主义新天地 提交于 2019-12-21 04:34:07

问题


I am trying to pass an array of objects from js to rails

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

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

Rails

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

Here the logger statement always gives me out put as

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

I am expecting the below log in rails.

 [{:test=>"asdas"}] 

回答1:


You should use JSON.stringify in Javascript, which takes either an array or hash as its argument (since these are the only valid JSON constructions). It returns a form which is the Javascript object serialized to JSON.

On the Ruby side, you'll receive a JSON encoded string, so you'll need to require 'json' (this is done automatically in Rails) and use JSON.parse(string). This will give you a Ruby object.




回答2:


Try this:

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


来源:https://stackoverflow.com/questions/38175383/passing-array-of-objects-from-js-to-rails

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!