Ruby on rails 带有JSON请求的强参数
我认为如果请求被识别为JSON,Rails会自动识别/解析JSON参数。但请求如下:Ruby on rails 带有JSON请求的强参数,ruby-on-rails,json,ruby-on-rails-5,strong-parameters,Ruby On Rails,Json,Ruby On Rails 5,Strong Parameters,我认为如果请求被识别为JSON,Rails会自动识别/解析JSON参数。但请求如下: Processing by Api::V1::LinksController#create as JSON Parameters: {"link"=>"{\"title\":\"My first title\"}"} 和以下参数方法: def link_params params.require(:link).permit(:title) end 导致此错误的原因: NoMethodError(未
Processing by Api::V1::LinksController#create as JSON
Parameters: {"link"=>"{\"title\":\"My first title\"}"}
和以下参数方法:
def link_params
params.require(:link).permit(:title)
end
导致此错误的原因:
NoMethodError(未定义的“{\”title\:\“My first title\”}”方法'permit':字符串):
任何关于如何让强params+json工作的想法都将不胜感激
更新
下面是发出请求的代码(使用http客户端):
根据文件
将
参数:
替换为数据:
这似乎不是json正文,而是字符串。尝试使用类型为application/json
的POST
和raw body
来执行请求。应该可以。请显示向Rails后端发出请求的代码。您是否尝试解析JSON?JSON.parse(params)这将提供正确的JSON格式,而不是使用发出请求的代码更新字符串。根据文档,将params:
替换为数据:
。这有区别吗?
axios({
method: 'post',
url: '/api/v1/links.json',
responseType: 'json',
params: {
link: {
title: "My first title"
}
},
})
.then( (response) => {
});
axios({
method: 'post',
url: '/user/12345',
data: {
firstName: 'Fred',
lastName: 'Flintstone'
}
});