Rails:显示state_machine验证错误

时间:2013-03-12 21:31:43

标签: ruby-on-rails validation error-handling state-machine

我在Ruby on Rails中使用state_machine进行在线购买流程。其中一个州包括用户填写带有账单信息的表格。这个表单是必需的,所以我在转换到下一个状态时验证它是这样的:

state :confirm do
  validates_presence_of :name, :email
end

表单处于状态:info,下一个表单为:confirm

这很好用:如果缺少任何字段,state_machine将不会转换到下一个状态。 但是,当验证返回false时,我找不到有关如何显示错误通知的信息。我想在此验证失败时显示一条消息,并重定向到表单状态。在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

(我假设你很久以前就已经解决了这个问题,但是......) 我认为这个答案与state_machine无关。这就是问题所在:

  

我希望在此验证失败时显示消息,并且重定向到表单状态。

如果您重定向,则会重新加载该对象,并且所有未保存的属性都会丢失,与任何验证错误一样。

处理失败验证的标准方法是(重新)渲染编辑视图,而不是重定向到编辑操作。这样可以保留未保存的属性和验证错误。