我需要错误验证/重定向方面的帮助......
如果我使用format.html {redirect_to :back, flash: {error: "Oops, something went wrong. Please try again."}
错误消息有效,但它不包含表单数据,因此用户需要重新输入并且不知道哪些字段不正确。
该format.xml {render :xml => @award.errors, :status => :unprocessable_entity}
行重定向到后面,但没有显示任何错误。
我想看看哪些字段不正确,它们的验证消息完好无损。请帮助语法。提前致谢!
respond_to do |format|
if @award.save
format.html { redirect_to(new_award_path, :notice => 'Thank you for your nomination!') }
format.xml { render :xml => @award, :status => :created, :location => @award }
else
format.html {redirect_to :back}
#format.html {redirect_to :back, flash: {error: "Oops, something went wrong. Please try again."}}
format.xml {render :xml => @award.errors, :status => :unprocessable_entity}
end
end
更新以包含更多详细信息:
我为此创建方法使用了 2 种不同的形式。每个表单都有一个隐藏字段来设置布尔值,然后我根据该隐藏条件在控制器中执行操作。如果有错误,我需要重定向到正确的表单,保留它的值,并显示适当的错误字段。像这样的东西:
respond_to do |format|
if @award.save
format.html { redirect_to(new_award_path, :notice => 'Thank you for your nomination!') }
format.xml { render :xml => @award, :status => :created, :location => @award }
else
if boolean_field == true
format.html { render action: "true_form" }
format.xml {render :xml => @award.errors, :status => :unprocessable_entity}
else
format.html { render action: "false_form" }
format.xml {render :xml => @award.errors, :status => :unprocessable_entity}
end
end
end
当我以这种方式尝试时,错误会起作用,但它总是会回到 true_form,即使我从 false_form 开始。所以,就好像它忽略了 boolean_field 条件......有意义吗?