我有一个表单的创建操作,该操作可能会生成错误(即缺少名字),然后重定向。
问题是,当重定向发生时,这些表单错误就会丢失。 我如何在 session 中传递这些表单错误以显示回原始表单(仍应填写以前的详细信息,如原始 error_messages 行为)?
谢谢!
<小时/>代码:
def create
@contact = Contact.new(params[:contact])
if @contact.save
flash[:notice] = "Sent."
else
flash[:notice] = "Error."
end
end
最佳答案
Rails 中的约定是渲染原始操作的 View 而不是进行重定向。所以你的代码将如下所示:
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
如果 new
操作需要进行任何其他设置,请将公共(public)代码提取到私有(private)方法中,并在 before_filter
中为两个 调用它>新建
和创建
。
关于ruby-on-rails - 如何在 session 或Flash中传递表单错误? [ rails 2.3.5],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2573350/