0

我在 Ruby on Rails 中使用state_machine进行在线购买过程。其中一种状态包括用户填写带有计费信息的表格。此表单是必需的,因此我在转换到下一个状态时验证它,如下所示:

state :confirm do
  validates_presence_of :name, :email
end

表格在哪里,:info下一个是:confirm

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

4

1 回答 1

0

(我假设你早就解决了这个问题,但是......) 我认为这个答案与 state_machine 无关。这就是问题:

我想在此验证失败时显示一条消息,并重定向到表单状态。

如果你redirect,对象会被重新加载,所有未保存的属性都会丢失,任何验证错误也会丢失。

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

于 2013-07-23T13:49:46.630 回答