【问题标题】:Rails flash messages with HAMLRails 使用 HAML 闪现消息
【发布时间】:2012-12-08 08:52:32
【问题描述】:

我开始学习 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 %>

【问题讨论】:

    标签: ruby-on-rails-3 haml


    【解决方案1】:

    给你:

    = 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
    

    所有输出:&lt;div class="foo bar" id="test"&gt;&lt;/div&gt;

    您需要将计算属性放入哈希中,即:

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

    输出:&lt;div class="bar"&gt;&lt;/div&gt;

    另外,请注意,在上述所有示例中,:attribute =&gt; 'value' 可以表示为attribute: 'value',例如:

    %button.close{ data: { dismiss: 'alert' } } x
    

    希望对您有所帮助。

    【讨论】:

    • 我建议在内容标签周围添加这个检查,因为像 Devise 这样的库在这个结构中添加的不仅仅是警报和通知。 -if key == 'alert' 或 key == 'notice'
    • 我知道这已经很老了,但仍然有用,建议使用 - flash.each 而不是 = flash.each,否则 HAML 解释器会将 Flash 哈希转储到您的 HTML 中。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-13
    • 1970-01-01
    • 2011-01-21
    相关资源
    最近更新 更多