Vâng, bạn có thể tạo ra một phần app/views/shared/_flash_messages.js.rjs
, sau đó bạn có thể làm từ bất cứ nơi nào (ví dụ như từ rjs
partials khác.)
Tiếp cận của tôi trong các loại ứng dụng đã được như sau:
cho phản ứng phi AJAX mà có thể có một đèn flash:
- trong bố cục (ví dụ:
layouts/application.erb
), thêm ví dụ:
render :partial => 'shared/flash_messages.html.erb'
để được trả lời AJAX mà cũng có thể cần để hiển thị tin nhắn nhấp nháy, tôi đã thêm các rjs
mã sau:
- trong mỗi câu trả lời
rjs
(ví dụ controller/action.js.rjs
), thêm ví dụ:
render :partial => 'shared/flash_messages.js.rjs'
Trong trường hợp hai partials làm cần thiết để hiển thị flash, sau đó gọi flash.discard(:error)
hoặc flash.discard(:notice)
nếu thích hợp.
mẫu app/views/shared/flash_messages.html.erb
file:
<% if flash[:error] %>
<div id="flash_message" class="error"><%= h(flash[:error]) %></div>
<% flash.discard(:error) %>
<% elsif flash[:notice] %>
<div id="flash_message" class="notice"><%= h(flash[:notice]) %></div>
<% flash.discard(:notice) %>
<% else %>
<div id="flash_message" style="display: none;" />
<% end %>
mẫu app/views/shared/flash_messages.html.rjs
file:
if !flash[:error].blank?
page['flash_message'].
replace_html(flash[:error]).
removeClassName('notice').
addClassName('error').
show()
else
page['flash_message'].
replace_html(flash[:notice]).
removeClassName('error').
addClassName('notice').
show()
end
Thankyou. Đây chính xác là ví dụ mà tôi đã hy vọng. Các tệp js.erb của tôi giờ đã sạch hơn nhiều;) – atmorell