Навигация назад при сбое сохранения в рельсах? - PullRequest
0 голосов
/ 20 апреля 2011

Когда что-то идет не так при сохранении, я делаю следующее прямо сейчас, но оно кажется немного неправильным.

  if @store.update_attributes(params[:store])
    redirect_to admin_stores_path, notice: "Updated ..."
  else
    flash[:alert] = "Error"
    render action: 'edit'
  end  

Было бы лучше использовать браузеры для навигации назад и redirect_back или что-то еще?Я даже не могу вспомнить, откуда я скопировал вышеупомянутое, но иногда это дает странные результаты.

Может кто-нибудь сказать мне лучший способ обработки неудачного сохранения;мудрая навигация?

Ответы [ 3 ]

4 голосов
/ 20 апреля 2011

Причина, по которой вместо redirect используется render, проста:

  • Вы сохраняете переменные объекта, чтобы пользователю не приходилось все перепечатывать, если ондопустил ошибку.

  • ошибки хранятся внутри самого объекта, поэтому вам нужно, чтобы они отображались

2 голосов
/ 20 апреля 2011

Обычно, когда вы пишете действия контроллера, вы обрабатываете две ситуации: успех и неудача.Если произойдет ошибка, вы отобразите то же действие, чтобы показать ошибки проверки, и если действие будет успешным, вы redirect_to somewere.Это обычная практика, и вы даже можете найти такие «шаблоны» в разных книгах о Rails.Насчет redirect_to: back, я предпочитаю не использовать его, потому что он может доставить много хлопот:)

1 голос
/ 20 апреля 2011

Это наиболее используемый способ обработки формы в рельсах. Когда объект был сохранен, вы хотите, чтобы пользователь перенаправил другую страницу, в основном, страницу показа.

Наиболее важным является действие рендеринга, когда вы говорите, что действие рендера вы действительно хотите визуализировать, вид этого действия. представление имеет form_for и error_message_for, они отображают форму с предварительными входными значениями и ошибками объекта, которые возникают при сохранении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...