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

На мой взгляд, у меня есть:

<% flash.now[:error] = "ERROR FLASH" %>
<% flash.now[:notice] = "NOTICE FLASH" %>
<% flash.now[:warning] = "WARNING FLASH" %>

Когда страница отрисовывается, появляется только синее информационное окно с NOTICE FLASH. Два других не будут показаны. То же самое происходит со знаками равенства:

<%= flash.now[:error] = "ERROR FLASH" %>
<%= flash.now[:notice] = "NOTICE FLASH" %>
<%= flash.now[:warning] = "WARNING FLASH" %>

Есть ли в моем приложении rails параметр, при котором предупреждения или ошибки не отображаются?

2 ответа

У меня была такая же проблема со следующим кодом:

redirect_to(docs_path, :warning => "I am here!!!") and return if @doc.nil?

использование ": уведомление" и ": предупреждение" вместо ": предупреждение" работает, как и ожидалось. Кажется, что вы можете установить: note and: alert непосредственно в методе перенаправления, но не: error и: warning.

Тестирование на flash[: предупреждение].nil? в следующем действии даёт истину, но flash[: note].nil? имеет значение false (т. е. вспышка: предупреждение не установлено, но установлено: уведомление).

Чтобы обойти это, я установил значение flash[: warning] перед перенаправлением так:

if @doc.nil?
  flash[:warning] =  "I am here!!!"
  redirect_to(docs_path) and return 
end

Это не так элегантно, но работает!

Rails не делает ничего магического с содержимым флеш-памяти, кроме как очищает его, когда это необходимо.

Это полностью зависит от вас, чтобы предпринять соответствующие действия с содержимым флеш-памяти, т.е. если вы хотите отобразить сообщение об ошибке, уведомление и предупреждение, вы должны поставить

<%= flash[:error] %>

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

Другие вопросы по тегам