2013-04-28 104 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