Рельсы перед перенаправлением фильтра не проявляются - PullRequest
0 голосов
/ 24 февраля 2012

Я публикую комментарий с использованием некоторого JavaScript.Это вызывает действие create в контроллере комментариев, который имеет фильтр before, который проверяет принадлежность пользователя к правильной группе.Фильтр before имеет перенаправление на страницу панели мониторинга, но когда я пытаюсь опубликовать комментарий с пользователем, который не входит в правильную группу, комментарий не создается, но перенаправление не происходит.

Вот фильтр before:

  def require_correct_user
    activity = Activity.find(params[:activity_id])
    unless (current_user.group == activity.group)
      redirect_to dashboard_path
    end
  end

В журналах сервера я вижу следующее:

Started GET "/dashboard" for 127.0.0.1 at 2012-02-23 14:40:07 -0500
  Processing by UsersController#dashboard as */*

Но страница остается неизменной в браузере и не перенаправляется.

Что удерживает страницу от перенаправления?Связано ли это с тем, что комментарий публикуется с помощью javascript?

ПОЯСНЕНИЕ:

Я публикую комментарий к действию создания в форме:

=form_tag({ :action => 'create', :controller => 'comments', :method => 'post' }

Я отправляю форму с помощью плагина jquery-form и вызываю ajaxForm.

1 Ответ

2 голосов
/ 24 февраля 2012

Если вы используете ajaxForm, то вы делаете запрос ajax через XMLHttpRequest, что означает, что окно браузера не будет обновляться. Таким образом, все, что вы делаете, - это перенаправление запроса ajax. Чтобы это работало так, как вам нужно, вам необходимо вернуть код состояния в запрос ajax, который при обработке клиентским браузером заставляет браузер загрузить альтернативный URL.

...