我有一个临时;迟到的lhs菜单有一个搜索功能来限制菜单选项。
有时用户可能会搜索不会返回结果的选项。
当搜索没有返回任何结果时,我想在搜索框上方显示一个flash通知,以便进行通信。
除了菜单flash之外,我还想使用flash来传达与视图主要部分中的表单操作相关的正常消息,例如记录保存,用户登录等。
是否可以在一个视图上显示多个Flash消息,或者有更好的方法来实现此目的吗?
答案 0 :(得分:0)
我使用带有ajax的flash解决了相同的场景,这样我就可以使用id或类选择器来更新我应用中的任何地方的html。
使用ajax显示flash 在application_helper中添加
def flash_display
response = ""
flash.each do |name, msg|
msg=msg
response = response +
content_tag(:div, msg, :id => "flash_#{name}",:class=>"alert alert-danger") do
"#{msg}".html_safe
end
end
flash.discard
response
end
创建js文件以使用id / class选择器显示flash消息,例如 ..... ajax_flash_error.js.erb 强>
<% if type== "User" %>
$('#flash_user').html("<%= escape_javascript raw(flash_display) %>");
<% else %>
$('#common_flash').html("<%= escape_javascript raw(flash_display) %>");
<%end%>
以通常的方式从控制器发送flash消息 users_controller.rb 强>
def create
if user
//do comething
else
respond_to do |format|
flash.now[:error]="You cannot edit this Image"
format.js { render 'shared/ajax_flash_error',:locals=>{:type=>"User"}}
end
end
end
在布局或任何视图文件中显示Flash消息.... application.html.erb 强>
<html>
<head></head>
<body>
<div id="common_flash">
<% flash.each do |name, msg| %>
<%= msg%>
<%end%>
</div>
####some other view file,use other flash id
<div id="flash_user">
<% flash.each do |name, msg| %>
<%= msg%>
<%end%>
</div>
</body>
</html>
通过这种方式,您可以使用具有唯一ID /类的多个div,并在整个应用程序中随时随地显示Flash消息
......希望它能帮助**