#ruby-on-rails #ruby-on-rails-3
#ruby-on-rails #ruby-on-rails-3
Вопрос:
У меня есть две строки сообщений об ошибках, я хотел бы показать их в пользовательском интерфейсе отдельно.
flash[:error] = "Error message one"
flash[:error] = "Error message two"
в настоящее время они оба некоторое время мигают, и второе сообщение об ошибке скрывается первым.
Я бы хотел, чтобы «сообщение об ошибке один» мигало в течение нескольких секунд, а «сообщение об ошибке два» находилось под «сообщением об ошибке один» и оставалось на странице, не исчезая. Как это сделать в rails 3?
Комментарии:
1. попробуйте этот драгоценный камень github.com/dapi/gritter_notices
Ответ №1:
Вы не ограничены flash[:error]. Вы могли бы, например, определить
flash[:second] = "Error message two"
и отобразите это в главном макете app / views/layout/application.html.erb с:
<section id="flash">
<% flash.each do |key, value| %>
<div class="flash <%= key %>"><%= value %></div>
<% end %>
</section>
Это приводит к двум разделениям одно за другим, и если вам нужно, вы можете реализовать исчезновение первого из них, используя Prototype или jQuery.
Комментарии:
1. как тогда сделать сообщение стабильным на странице? я имею в виду не вспышку и исчезновение.
2. Все флэш-сообщения «стабильны» до следующего запроса. Или вы имеете в виду оставаться на нескольких страницах? Тогда вам нужно будет либо снова установить flash, либо использовать другой подход, например, сохранить это значение в сеансе и отобразить его в основном макете. Тогда это будет сохраняться до тех пор, пока вы не очистите значение от сеанса. А для flash вас могут заинтересовать методы flash.now и flash.keep.
3. Вы изменили макет для отображения flash, а не просто установили flash-сообщение?