使用HAML的Rails闪存消息

12

我开始学习HAML:但我无法将Flash块翻译成HAML:

<% flash.each do |key, value| %>
  <div class="alert alert-<%= key %>">
    <button type="button" class="close" data-dismiss="alert">×</button>
    <strong><%= value %></strong>
  </div>        
<% end %>
1个回答

17

请看这里:

= flash.each do |key, value|
  .alert{ :class => "alert-#{key}" }
    %button.close{ :data => { :dismiss => "alert" } } x
    %strong
      = value

只是提供一下信息,你可以通过在声明后将它们附加为哈希来向任何元素添加属性。如果您没有指定元素,只有一个类或ID,HAML 将使用给定的类或 ID 使该元素成为 div。但是您可以通过多种方式实现这一点。例如,以下都是相同的:

%div{:class => 'foo bar', :id => 'test' }
.foo{:class => 'bar', :id => 'test'}
#test.bar{:class => 'foo'}
#test.foo.bar

所有输出:<div class="foo bar" id="test"></div>

但是,您需要在哈希表中放置计算属性,例如:

- klass = "bar"
%div{ :class => klass }

输出: <div class="bar"></div>

此外,请注意在上面的所有示例中,:attribute => 'value' 可以表示为 attribute: 'value',例如:

%button.close{ data: { dismiss: 'alert' } } x
希望这能有所帮助。

我建议在内容标签周围添加此检查,因为像Devise这样的库会将更多内容添加到此结构中。
  • 如果键等于'alert'或'notice'
- gwnp
4
我知道这很老,但仍然有用。建议使用“- flash.each”而不是“= flash.each”,否则HAML解释器会将flash哈希转储到HTML中。 - Midwire

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接