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