2013-04-28 77 views
3

我有以下的ERB代码工作正常:Haml的:如何生成动态ID

<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} 

显然,我的Ruby插值在haml中出现了一些问题,但我无法正确理解它。根据文档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?

+0

直到您满意HAML使用[这](http://html2haml.heroku.com/)转换器 – prem 2013-04-28 15:41:51

+0

@prem:感谢您的链接,这将是对我来说非常有用。 – zrl3dx 2013-04-28 16:14:45

+0

[我如何在Haml中创建动态ID?](http://stackoverflow.com/questions/2217583/how-do-i-make-dynamic-ids-in-haml) – lulalala 2014-01-20 06:01:48

回答

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

这正是我想要的, 谢谢。 – zrl3dx 2013-04-28 16:15:14