尝试让 POST 返回 400 错误请求

2024-04-22

我有一个通过关联构建新模型的 create 方法,如果 POST 请求中没有参数,我希望它返回带有一些文本的 400 响应。但是,我收到错误。

这是在 Rails 4.0.2 中

控制器方法:

  def create
    @cast_profile = current_user.build_cast_profile(cast_profile_params)
    if @cast_profile.save
      redirect_to cast_profile_path
    else
      render :edit
    end
  end

  def cast_profile_params
    params.require(:cast_profile).permit(:name, :email, :public)
  end

如果我传递参数,一切都很好,但我正在尝试测试错误的请求场景。 这是错误:

ActionController::ParameterMissing: param not found: cast_profile

我可以明确地挽救它,但我认为强大的参数应该自动执行此操作。


行为如下:

处理未经许可的密钥

默认情况下,未明确允许的参数键将被 登录开发测试环境。在其他环境下 这些参数将被简单地过滤掉并忽略。

此外,可以通过更改 config.action_controller.action_on_unpermissed_pa​​rameters 属性 你的环境文件。如果设置为 :log ,则不允许的属性将 被记录,如果设置为 :raise 将引发异常。

(source https://github.com/rails/strong_parameters#handling-of-unpermitted-keys)

我建议通过 400 状态(错误请求)来挽救此异常:

rescue_from ActionController::ParameterMissing do
  render :nothing => true, :status => :bad_request
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尝试让 POST 返回 400 错误请求 的相关文章

随机推荐