Rails flash.notice появляется на короткое время после перезагрузки - PullRequest
0 голосов
/ 23 октября 2018

У меня есть действие контроллера в Rails следующим образом:

def register
 if logged_in?
   current_user().courses << Course.find(params[:course_id])
   flash.notice = 'Successfully registered!'
   redirect_to '/'
 else
   flash.alert = "You must be logged in"
   redirect_to '/courses'
 end
end

Это отображается в представлении /courses как

<% if flash[:notice] %>
   <div class="notice"><%= flash[:notice] %></div>
<% end %>

Однако, когда я иду по другому маршрутуи затем вернитесь к /courses, уведомление коротко мигает, прежде чем уйти.Это нормальное поведение?Если так, почему это происходит?Если нет, что я делаю не так?

1 Ответ

0 голосов
/ 23 октября 2018

Если вы не хотите, чтобы вспышка появлялась снова, используйте flash.now вместо:

flash.now[:notice] = 'Successfully registered!'

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

before_action :logged_in, only: [:register]

# ...

def register
  # ...
end

Здесь logged_in должен быть методом, гарантирующим, что пользователь зарегистрирован и вошел в систему. Проверьте Фильтры для получения дополнительной информации.

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