简而言之,正在向/games
发出POST请求。
即使强大的params要求看起来像这样:
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
对象是绝对必须的,但在这里似乎被忽略了。
建议?
答案 0 :(得分:1)
所以,这是任何需要了解此信息的人的更新。
经过一番挖掘,答案是-
如果您的require子句的对象名称与您的控制器名称匹配,Rails将使该对象成为可选对象。您可以在初始化程序中关闭此行为。
来源:https://api.rubyonrails.org/v5.2.1/classes/ActionController/ParamsWrapper.html