2013-04-28 2 views
3

Я получил следующий код Еврорадио, который работает отлично: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_ # {} используется для интерполирования рубина, и он работает в таком случае:

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

, но это не то, что я хочу.

Подводя итог, я хочу, чтобы получить следующий вывод:

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

, но он может быть также:

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

Как получить, что с Haml?

+0

До вас устраивает Haml использовать [это] (http://html2haml.heroku.com/) преобразователь – prem

+0

@prem: спасибо за эту ссылку, это будет очень полезно для меня. – zrl3dx

+0

Возможный дубликат [Как сделать динамические идентификаторы в Haml?] (Http://stackoverflow.com/questions/2217583/how-do-i-make-dynamic-ids-in-haml) – lulalala

ответ

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

Это именно то, что я хотел , благодаря. – zrl3dx

Смежные вопросы