0

RubyonRailsのオンライン購入プロセスにstate_machineを使用しています。状態の1つは、ユーザーが請求情報をフォームに入力することで構成されます。このフォームは必須なので、次のように次の状態に移行するときに検証しています。

state :confirm do
  validates_presence_of :name, :email
end

フォームが状態:infoにあり、次のフォームはです:confirm

これは正常に機能します。フィールドが欠落している場合、state_machineは次の状態に移行しません。ただし、検証でfalseが返された場合にエラー通知を表示する方法に関する情報が見つかりません。この検証が失敗したときにメッセージを表示し、フォームの状態にリダイレクトしたいと思います。よろしくお願いします!

4

1 に答える 1

0

(これはずっと前に解決したと思いますが...) この答えはstate_machineとは関係ないと思います。これが問題です:

このバリデーションが失敗したときにメッセージを表示し、フォーム状態にリダイレクトしたいと考えています。

リダイレクトすると、オブジェクトが再ロードされ、保存されていないすべての属性が失われ、検証エラーも失われます。

失敗した検証を処理する標準的な方法は、編集アクションにリダイレクトするのではなく、編集ビューを (再)レンダリングすることです。これにより、保存されていない属性と検証エラーが保持されます。

于 2013-07-23T13:49:46.630 に答える