RoR:创建/更新:在保留先前值的同时显示验证错误

时间:2020-03-06 14:58:58  来源:igfitidea点击:

我有一个基本模型,其中指定了一些字段来验证其存在。在控制器中的create动作中,我执行标准操作:

@obj = SomeObject.new(params[:some_obj])

if @obj.save
  flash[:notice] = "ok"
  redirect...
else
  flash[:error] = @obj.errors.full_messages.collect { |msg| msg + "<br/>" }
  redirect to new form
end

但是,当我重定向到新表单时,显示错误,但字段为空。有没有一种方法可以使用输入的值重新填充字段,以便可以轻松地纠正错误?

解决方案

我们render:action =>:new而不是重定向。

同样在闪存哈希中捕获@ obj,然后在new操作中检查它。

@obj = SomeObject.new(params[:some_obj])

if @obj.save
  flash[:notice] = "ok"
  # success
else
  flash[:error] = @obj.errors.full_messages.collect { |msg| msg + "<br/>" }
  flash[:obj] = @obj
  # redirect to new form
end

new中:

@obj = flash[:obj] || MyClass.new