将对象作为查询字符串发送

时间:2019-12-26 16:09:13

标签: javascript ruby-on-rails json axios json-api

我正在通过fast_jsonapi gem使用JSPON API规范,并尝试创建一个sparse fieldset发送到我的rails控制器。理想的查询字符串如下所示:

/locations?fields[location]=name&fields[location]=address

但是我最终得到的是这样的编码网址:

locations?fields=%7B%22location%22:[%22name%22,%22address%22]%7D

我将field选项传递给控制器​​

API::Admin::LocationSerializer.new(locations, { fields: params[:fields] }).serialized_json

但是得到错误:

no implicit conversion of Symbol into Integer

这是我通过axios传递查询字符串的方式:

axios.get('locations', {
  params: {
    fields: {
      location: ['name', 'address'],
    },
  }
});

1 个答案:

答案 0 :(得分:0)

您需要使用paramsSerializer选项才能正常工作。像这样:

const qs = require('qs');

axios.get('locations', {
  params: {
    fields: {
      location: ['name', 'address'],
    },
  },
  paramsSerializer: params => qs.stringify(params)
});