尝试获取POST以返回400错误请求

时间:2013-12-28 03:21:54

标签: ruby-on-rails-4 strong-parameters

我有一个通过关联构建新模型的create方法,如果POST请求中没有params,我希望它返回带有一些文本的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

如果我通过params它一切正常,但我正在尝试测试错误的请求场景。 这是错误:

ActionController::ParameterMissing: param not found: cast_profile

我可以明确地拯救它,但我认为强大的参数应该自动完成。

1 个答案:

答案 0 :(得分:42)

行为如下:

  

处理未经许可的密钥

     

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

     

此外,可以通过更改此更改   config.action_controller.action_on_unpermitted_pa​​rameters属性   你的环境文件。如果设置为:log将取消未经许可的属性   记录,如果设置为:将引发异常。

source

我建议使用400状态(错误请求)从此异常中抢救:

rescue_from ActionController::ParameterMissing do
  render :nothing => true, :status => :bad_request
end