Ruby on rails 3 使用flash:error、:alert和:notice有什么区别?

Ruby on rails 3 使用flash:error、:alert和:notice有什么区别?,ruby-on-rails-3,Ruby On Rails 3,正如问题的标题所问,我很想知道使用flash[:error]、flash[:alert]和flash[:notice]是否有任何区别。如果是这样的话,什么时候使用它们合适?为什么?它们只是不同的分类。我主要使用:error和:notice。请注意,我用于信息性消息(“您的密码已更改”、“更改已保存”等)。我保留:错误用于关键事项/问题(“您的密码不匹配”、“登录失败”等)这只是一个分类。它生成div#error.error或div#notice.notice,注意您连接了上面所需的逻辑 小样本:

正如问题的标题所问,我很想知道使用
flash[:error]
flash[:alert]
flash[:notice]
是否有任何区别。如果是这样的话,什么时候使用它们合适?为什么?它们只是不同的分类。我主要使用
:error
:notice
。请注意,我用于信息性消息(“您的密码已更改”、“更改已保存”等)。我保留
:错误
用于关键事项/问题(“您的密码不匹配”、“登录失败”等)

这只是一个分类。它生成div#error.error或div#notice.notice,注意您连接了上面所需的逻辑

小样本:

.alert, .error, .notice, .success { padding:.8em 0; margin:0 0 2px 0; border:2px solid #ddd; font-size:1.6em; text-align:center;}

.error { background:#FBE3E4;color:#8a1f11;border-color:#FBC2C4; }
.notice { background:#FFF6BF;color:#514721;border-color:#FFD324; }
.success { background:#DDFCD5;color:#000;border-color:#44A815; }
.alert { background:#FBE3E4;color:#8a1f11;border-color:#FBC2C4; }

.error a {color:#8a1f11;}
.notice a {color:#514721;}
.success a {color:#264409;}
.alert a {color:#8a1f11;}

flash是一种Rails机制,用于跨2个请求保存某些信息。您在一个请求中在flash散列中设置了一些内容,并且在您从同一客户机收到的下一个请求中可以使用这些内容

因为flash只是一个“散列”,你可以像使用一样使用它。这意味着您可以提供您的首选键(:alert/:error/:notice),并将您希望的任何消息字符串作为值


使用什么或何时使用:alert/:error/:notice的语义实际上由您来管理。话虽如此,一般的最佳实践是使用:注意事情是否正常并以绿色显示,以及在事情不正常且以红色显示时使用:错误。如果您想在web应用程序上使用:alert以查看其他类型的消息,则完全可以。我以前使用过它,只是为了提供黄色的信息。

我还使用了一个
:message
类来传递异常处理程序中捕获的
StandardError
消息。使用2个或3个类,您可以显示多达多个消息来响应单个事件或结果,每个消息都传达结果的不同方面,例如信息,基于应用程序所知的错误和基于系统所知的错误。

:alert
:注意
在功能上不同于您发明的其他键
FlashHash
为以下两种提供了方便的访问工具:
flash.alert
flash.notice
。Rails对这两个选项的偏好进一步提升到
重定向到
,它只接受
:alert
:notice
,或
:flash

但是,边缘Rails允许添加其他闪存类型的特权。以下是在Rails 4中添加自定义闪存类型的示例:

# app/controllers/application_controller.rb
class ApplicationController; add_flash_types(:error, :annoyance); end

# app/controllers/monopoly_controller.rb
class MonopolyController < ApplicationController
  def chance
    ...
    redirect_to haha_path, annoyance: "Go directly to jail. Do not pass Go. Do not collect $200."
  end
end

# app/views/haha/index.html.erb
<%= annoyance %>
#app/controllers/application_controller.rb
类应用程序控制器;添加闪光类型(:错误,:烦恼);结束
#应用程序/控制器/垄断控制器.rb
类单极控制器<应用控制器
def机会
...
重定向到哈哈路径,烦恼:“直接进监狱,不要过关,不要收200美元。”
结束
结束
#app/views/haha/index.html.erb

虽然选择的答案对使用三种类型的flash消息的目的有更多的解释,但我喜欢您对生成的标记的解释,它可以很容易地与css样式关联,以改进UI。谢谢