我在Ruby on Rails中使用state_machine进行在线购买流程。其中一个州包括用户填写带有账单信息的表格。这个表单是必需的,所以我在转换到下一个状态时验证它是这样的:
state :confirm do
validates_presence_of :name, :email
end
表单处于状态:info
,下一个表单为:confirm
。
这很好用:如果缺少任何字段,state_machine将不会转换到下一个状态。 但是,当验证返回false时,我找不到有关如何显示错误通知的信息。我想在此验证失败时显示一条消息,并重定向到表单状态。在此先感谢您的帮助!
答案 0 :(得分:0)
(我假设你很久以前就已经解决了这个问题,但是......) 我认为这个答案与state_machine无关。这就是问题所在:
我希望在此验证失败时显示消息,并且将重定向到表单状态。
如果您重定向,则会重新加载该对象,并且所有未保存的属性都会丢失,与任何验证错误一样。
处理失败验证的标准方法是(重新)渲染编辑视图,而不是重定向到编辑操作。这样可以保留未保存的属性和验证错误。