Haml:如何生成动态id

时间:2013-04-28 15:32:14

标签: ruby-on-rails haml string-interpolation

我在erb中有以下代码可以正常工作:

<div id='flash_<%= flash.keys.first.to_s %>'>
    <%=h    flash[flash.keys.first] %>
</div>

我想将其转换为haml:

#flash_#{flash.keys.first.to_s}
  =h flash[flash.keys.first]

但我收到错误:

Illegal element: classes and ids must have values.

奇怪的是,因为有值,'flash_'部分总是存在,即使我这样做也会出现错误:

#flash_#{nil.object_id}

显然,我在haml中使用Ruby插值有些不对劲,但我无法做到。根据文档http://haml.info/docs/yardoc/file.REFERENCE.html#ruby_interpolation_#{}用于内插Ruby,它适用于这种情况:

#flash_
  #{flash.keys.first.to_s}

但那不是我想要的。

总结一下,我想获得以下输出:

<div id="flash_foo"> blahblah </div>

但它也可以:

<div id="flash_"></div>

如何用haml获得它?

1 个答案:

答案 0 :(得分:11)

%div{ :id => "flash_#{flash.keys.first}" }    
  =h flash[flash.keys.first]