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

时间:2008-10-01 15:51:59

标签: ruby-on-rails ruby

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

@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

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

2 个答案:

答案 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