【发布时间】:2018-11-18 12:34:43
【问题描述】:
简而言之,正在向 /games 发出 POST 请求。
即使强参数要求看起来像这样:
def game_params
params.require(:game).permit(:name)
end
一个没有game 对象的json 请求,实际上只有一个name 字段。
{
"name": "Game of Life"
}
更奇怪的是,rails 记录器实际上制作了一个游戏对象!日志看起来像
Parameters: { "name" => "Game of life", "game" => {"name" => "Game of life"}}
暗示正在创建游戏对象。如果传递的唯一参数是 not name,Rails 将正确抛出 400。
我读过的所有文档都表明 JSON 中的 game 对象是绝对必须的,但这里似乎被忽略了。
建议?
【问题讨论】:
-
不清楚您是如何将 JSON 数据发送到 Rails 服务器的。你能提供你提出的整个请求 url、方法、数据、标题
-
你能提供你的控制器方法吗?您实际上是在调用
game_params,还是在您的控制器中有Game.create(name: params[:name])之类的东西? -
@jdno 实际上调用游戏参数;非常奇怪的行为
-
您确定没有在
game: { name: "Game of life" }中发送您的请求吗?对我来说最合乎逻辑的解释是您不小心将游戏包含在您的请求中,这解释了日志消息以及您没有收到错误的原因。因为你是对的,所以没有它应该有错误。 -
@jdno 绝对 100% 确定。我之前做过很多 Rails 项目,从来没有见过这样的事情。
标签: ruby-on-rails controller routing strong-parameters