我想为不同类型的flash消息设置不同的样式:错误,通知,成功。 如何识别传递给我视图的Flash消息类型?
在我的控制器中,我有:
flash[:error] = "Access denied."
在我的application.html.haml中,我有:
- if not flash.empty?
- flash.each do |key, value|
%div{:class => "alert-message #{key}"}= value
谢谢。
答案 0 :(得分:3)
flash
基本上是基于哈希。每种闪存消息只是与该类型的符号密钥相关联的值。因此flash[:error]
用于错误消息,flash[:notice]
和flash[:success]
用于其密钥类型。您甚至可以定义自己的类型(只使用任何符号)。并且您可以同时设置任意数量的键(例如,您可以在同一请求中设置flash[:notice]
和flash[:error]
。)
在您的示例中,这是使用类div
创建alert-message #{key}
。因此,例如,如果设置flash[:notice]
,则输出将为:
<div class="alert-message notice">Notice message</div>
它会为您设置的每种类型打印一个。因此,如果请求设置为flash[:error] = 'something went terribly wrong'
和flash[:notice] = 'take a look around'
,您将从该模板中获取此HTML:
<div class="alert-message error">something went terribly wrong</div>
<div class="alert-message notice">take a look around</div>