Добавление флеш сообщения после перенаправления - PullRequest
1 голос
/ 25 марта 2011

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

Теперь я внедрил файл new.js.erb в моем каталоге сессий (я следовал за принятым ответом в вопросе, с которым я связан), который выполняет перенаправление. Однако теперь я хочу добавить собственное флеш-сообщение после перенаправления на страницу, что-то вроде «Вы должны войти в систему, чтобы голосовать».

Я пытался добавить эту строку:

flash.now[:alert] = "You must be logged in to vote."

к новому действию моего контроллера сессий, но это добавляет сообщение всякий раз, когда я захожу на страницу входа, даже если я уже вошел в систему. Что мне делать?

Это код, который я использую:

  def access_denied
    notices = {
      :video_vote => {:new => "You must log in before voting"}
    }
    controller_name_sym = controller_name.to_sym
    action_name_sym = action_name.to_sym
    redirect_to login_path, :notice => (notices[controller_name_sym] && notices[controller_name_sym][action_name_sym] || "You must log in to perform this action.") and return false
  end

1 Ответ

0 голосов
/ 25 марта 2011

Я не уверен, есть ли лучший способ сделать это, однако, когда вы используете метод запрета доступа, вы можете сделать что-то вроде:

def access_denied
    notices = {
      :vote => {:new => "You must log in before voting"},
      :video => {:destroy => "You must log in before deleting a video"} 
    }
    controller_name_sym = controller_name.to_sym
    action_name_sym = action_name.to_sym
    redirect_to login_path, :notice => (notices[controller_name_sym] && notices[controller_name_sym][action_name_sym] || "You must log in to perform this action.") and return false
end

Если ваш хэш уведомлений будет иметь ключи в качестве символов имени контроллера, а значения будут хешами ключей символа имени действия к значению сообщения об ошибке.

Затем вы будете проверять этот хеш в настройках: note, и если его нет в хеше уведомлений, по умолчанию будет указано «Вы должны войти в систему, чтобы выполнить преформу ...»

Оттуда вы можете получить уведомление в методе sessions#new.

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