Разработать с рельсами 3 и дистанционно => верно - PullRequest
8 голосов
/ 28 марта 2011

У меня проблема с использованием devise для входа в AJAX.Я использую опцию :remote => true и jQuery-версию помощников javascript (https://github.com/rails/jquery-ujs). Когда пользователь вводит правильную информацию, мой create.js.erb в представлении сессий отображается. Это нормально, потому что я могуперенаправьте моего пользователя, используя JS в этом файле. Но когда возникает ошибка, например, пользователь вводит ложную информацию, в ответ приходят только флеш-сообщения с кодом ошибки 401 - Unauthorized. Итак, нет view или create.js.erb или sthеще обрабатывается. Но я хочу обработать это сообщение, отображая его сбоку, чтобы пользователи получали некоторую обратную связь, что не так.

Я также пытался реализовать свой собственный контроллер с respond_to :js,и играть с :recall методом аутентификации надзирателя. Но он не работает.

Кто-нибудь знает некоторые лучшие практики для решения этой проблемы? Или мне следует избегать этого вспомогательного метода и просто использовать чистый jQuery дляajax вызывает?

thx, tux

Ответы [ 2 ]

9 голосов
/ 29 марта 2011

Вы можете использовать событие jQuery "ajax: error" в rails 3. Просто привяжите событие к вашей форме.

jQuery(function($) {
  $("#new_model").bind("ajax:error", function(event, data, status, xhr) {
    alert("something went wrong");
  });
});

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

1 голос
/ 17 июня 2011

Вот моя версия

<script>
  $(document).ajaxError(function(e, XHR, options){
    if (XHR.status == 401){
      window.location.replace("<%= new_user_session_path %>");
    }
  });
</script>

Он автоматически перенаправляет пользователя на страницу входа и работает со всеми элементами на странице.

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