Я хотел бы более аккуратно делиться уведомлениями FlashHash между простыми старыми пользователями HTTP и людьми UJS, которые мне удалось придумать.Позвольте мне показать вам, что у меня есть сначала:
Во-первых, часть секции respond_to
соответствующего контроллера #update
:
respond_to do |format|
if @cont.save
flash[:notice] = 'Continent was successfully updated.'
format.html { redirect_to edit_continent_url(@cont) }
format.json { head :ok }
format.js
и update.js.erb
, чтобы соответствовать ему:
$('#jsflash').html('<%= escape_javascript(render :partial => "application/notices/notice") %>').show();
<% flash.clear %> # clear the flash to avoid displaying on page reloads
Аналогично в моем application.html.erb
есть
<div id="jsflash"></div>
<%= render "application/notice/alert" %>
и app/views/application/notices/_notice.html.erb
:
<% unless flash[:notice].blank? %>
<div class="alert-message info fade in" data-alert="alert">
<a class="close" href="#">×</a>
<%= content_tag :p, flash[:notice] %>
</div>
<% end %>
Вещи, которые мне не нравятся:
- Может быть, это анал, но я бы предпочел не рендерить
<div id="jsflash"></div>
, если только мне это не нужно. - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *, поэтому в нем не разрешено '}случай перезагрузки страницы.Однако это станет действительно утомительным и подверженным ошибкам, так как каждое представление JS должно иметь это , но может забыть включить его.
<% flash.clear %>
, аналогично, это путаницаролей, с представлением, управляющим состоянием приложения. - Кажется, что для этого уже должно быть какое-то средство.Я что-то упустил из виду?