Flash i ajax

Jak rozwiązujecie problem wiadomości flash i ajaxowych requestów?

W tej chwili mam coś takiego:

$("div#flash_messages").html("<%= escape_javascript flash_messages %>"); setTimeout(function() { $('div#flash_messages div').fadeOut('fast') }, 2000); <% flash.discard %>
Niby działa jak należy, ale nie widzi mi się wrzucać to do każdego js-owego widoku. Próbowałem wrzucić do do app/assets ale rzuca się o brak helperów (#flash_messages konkretnie).

#flash_messages to helper, który renderuje partiale, tak żeby div-y były zgodne z Twitter-owym Bootstrap-em:

[code=ruby]def flash_messages
div = lambda {|name, msg| render partial: ‘flash_messages’, locals: {name: name, msg: msg} }
[flash.map {|name, msg| div[name, msg]}].join.html_safe
end

_flash_messages.html.haml

%div{class: [‘alert-message’, bootstraped_flash_type(name), :fade, :in], “data-alert” => :alert, id: “flash_#{name}”}
%a.close{:href => “#”} ×
%p= msg[/code]
i fragment layoutu:

[code=html]

<%= flash_messages %>
<%= yield %>
[/code]

Narazie, metodą “na szybko” zrobiłem to tak:

[code=ruby]# application_helper.rb
def reload_flash_messages
if request.xhr?
render partial: ‘reload_flash_messages’
end
end

_reload_flash_messages.html.erb

$(“div#flash_messages”).html("<%= escape_javascript flash_messages %>");
setTimeout(function() { $(‘div#flash_messages div’).fadeOut(‘fast’) }, 2000);
<% flash.discard %>[/code]
i dzięki temu w widokach js wołam helpera. niby 1 linijka zamiast 3, ale dalej mi się to niespecjalnie podoba :smiley:

Przy okazji :slight_smile:

Ooo fajne :slight_smile: nie znałem.

Dzięki!

nareszcie ja jakoś pomagam :stuck_out_tongue: