2013-03-12 6 views
0

Я использую state_machine для онлайн-процесса покупки в Ruby on Rails. Одно из состояний состоит в том, что пользователь заполняет форму с помощью платежной информации. Эта форма необходима, поэтому я его проверки при переходе к следующему состоянию так:Рельсы: отображение ошибок проверки состояния_машин

state :confirm do 
    validates_presence_of :name, :email 
end 

Если форма о состоянии :info и следующем является :confirm.

Это прекрасно работает: если какие-либо поля отсутствуют, state_machine не перейдет в следующее состояние. Однако я не могу найти информацию о том, как отображать уведомление об ошибке, когда проверка возвращает false. Я хочу показать сообщение, когда эта проверка не удалась, и перенаправляет на состояние формы. Заранее спасибо за вашу помощь!

+0

your_object.errors? – apneadiving

+0

Предполагая, что вы хотите добавить что-то вроде <% = current_order.errors if current_order.errors.present? %> к моему мнению, я пробовал это, и он не показывает ошибок :(Если вы имели в виду что-то еще, мне жаль, что я понял, что вы ошибаетесь! Спасибо за ответ! –

ответ

0

(предположим, вы решили это давно, но ...) Я думаю, что этот ответ не имеет ничего общего с state_machine. Это проблема:

Я хочу, чтобы отобразить сообщение, когда эта проверка не пройдена, и перенаправляет государству формы.

Если вы перенаправлять, объект перезагружается и все несохраненные атрибуты теряются, как и любые ошибки проверки.

Стандартный способ обработки недействительной проверки состоит в том, чтобы (повторно) визуализировать вид редактирования, а не перенаправление на действие редактирования. Это сохраняет несохраненные атрибуты и ошибки проверки.

Смежные вопросы