首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >测试POST ActionDispatch::Http::Parameters::ParseError: 765

测试POST ActionDispatch::Http::Parameters::ParseError: 765
EN

Stack Overflow用户
提问于 2018-03-02 00:10:27
回答 2查看 8.2K关注 0票数 15

上面说我的助手里有个意想不到的东西。

"ActionDispatch::Http::Parameters::ParseError: 765: unexpected token at 'conversation_identifier[participant_list][]=2&conversation_identifier[participant_list][]=1"

为了清晰起见,这是一个带有魔术数字的测试版本:

代码语言:javascript
复制
let(:headers) do
  { 'HTTP_CURRENT_USER_ID' => 2,
    'Content-Type'         => 'application/json' }
end
let(:params) { { conversation_identifier: { participant_list: [1, 2] } }

it 'is getting testy' do
  post resource_url, params: params, headers: headers
  assert_equal 201, response.status
end

这就是奇怪的地方。如果我不给它任何头信息,它解析这些参数也没有问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-02 00:10:27

卸下'Content-Type' => 'application/json'解决了问题。

最后还记得,ActionDispatch使用头部来了解如何解析参数。'Content-Type' => 'application/json'是一个标准的样板,可以用来处理GET请求和查询参数,但用这种方式使用POST就不行了。

票数 38
EN

Stack Overflow用户

发布于 2020-05-13 09:16:02

如果您仍然需要'Content-Type' => 'application/json':您应该将参数传递给raw_post,并对您传递的参数调用#to_json

像这样:

代码语言:javascript
复制
    let(:raw_post) { params.to_json }
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49053954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档