如何在会话或flash中传递表单错误?[Rails 2.3.5]

Yuv*_*rmi 2 forms session ruby-on-rails rails-flash

我有一个表单的创建操作可能会产生错误(即缺少名字),然后重定向.

问题是,当重定向发生时,那些形式错误就会丢失.我怎样才能在会话中传递这些表单错误以原始形式显示(仍应填写之前的详细信息,如原始的error_messages行为)?

谢谢!


代码:

def create
  @contact = Contact.new(params[:contact])
  if @contact.save
    flash[:notice] = "Sent."
  else
    flash[:notice] = "Error."
  end
end
Run Code Online (Sandbox Code Playgroud)

Jim*_*dra 5

Rails中的约定是呈现原始操作的视图而不是重定向.所以你的代码看起来像这样:

def create
  @contact = Contact.new(params[:contact])
  if @contact.save
    flash[:notice] = 'Sent.'
    redirect_to @contact
  else
    flash.now[:notice] = 'Error.'
    render :new
  end
end
Run Code Online (Sandbox Code Playgroud)

如果需要为操作执行任何其他设置new,请将公共代码提取到私有方法中,并在before_filterfor new和for中调用它create.