我有一个基本模型,其中我已指定了一些字段来验证其存在。在控制器的创建动作中我做标准:
@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
然而,当我重定向到新表单时,错误显示,但字段为空。有没有办法用输入的值重新填充字段,以便可以轻松纠正错误?
答案 0 :(得分:5)
您render :action => :new
而不是重定向。
答案 1 :(得分:1)
在Flash哈希中捕获@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