Ruby on rails 处理异常时如何保留字段数据?

Ruby on rails 处理异常时如何保留字段数据?,ruby-on-rails,exception-handling,Ruby On Rails,Exception Handling,在我的控制器中,我希望通过重定向回控制器操作来处理ActiveRecord::RecordInvalid异常,控制器操作会导致一条flash消息,但我还希望保留用户输入的表单数据。有没有最好的方法来处理这个问题 rescue_from ActiveRecord::RecordInvalid do |exception| redirect_to :back, alert: exception.message end 这目前可以正确地重定向和显示flash消息,但我不确定保留表单数据的最佳做法

在我的控制器中,我希望通过重定向回控制器操作来处理ActiveRecord::RecordInvalid异常,控制器操作会导致一条flash消息,但我还希望保留用户输入的表单数据。有没有最好的方法来处理这个问题

rescue_from ActiveRecord::RecordInvalid do |exception|
  redirect_to :back, alert: exception.message
end

这目前可以正确地重定向和显示flash消息,但我不确定保留表单数据的最佳做法是什么。提前感谢。

通常这是在控制器中处理异常的方法。表示创建操作

def create
  @your_inst_var = YourModel.new(your_instance_var_params)

  if @your_inst_var.save
    redirect_to your_inst_var_path, notice: 'Your Inst Var was successfully created.'
  else
    render action: 'new'
  end
end

*您的_instance_var_params被定义为满足rails 4强参数的私有方法

谢谢您的回复,但我不确定您的示例中是否处理了任何异常。您能澄清一下吗?当无法将记录保存到数据库时,会引发RecordInvalid。我的答案是通过检查记录是否保存来处理此异常。如果未保存,则您知道您引发了RecordInvalid,在这种情况下,您将呈现新操作。阅读本文,因为它解释了为什么呈现new将保留您的params.maybe.save引发并处理其自身的异常,并在出现异常时返回false(.save!将实际公开该异常,对吗?)。