Как сделать динамические идентификаторы в Haml?



#item


создает div с id= "item"



.box#item


создает div с class= "box"и id="item"



.box#="item "+x


создает div с class= "box"и комментарием '#="item" +x'



.box#
="item"+x


бросает " незаконный элемент: классы и идентификаторы должны иметь значения."



как мне установить идентификатор переменной?

467   2  

2 ответов:

есть два пути:

длинный путь формы (определите идентификатор, как если бы это был обычный атрибут):

.box{:id => "item_#{x}"}

производит этот (x что-нибудь x.to_s значение):

<div class="box" id="item_x">

короткий путь формы:

.box[x]

производит следующее предположение x пример item:

<div class="box item" id="item_45">

посмотреть ссылка HAML для получения дополнительной информации.

вы можете установить id и class в HAML следующие способы

  1. обычным способом

    .box.item#item
    
    <div id="item" class="box item"></div>
    
  2. если вам нужна интерполяция, вы можете использовать этот формат

    .box{id: "item_#{123}", class: "item_#{123}"}
    
    <div id="item_123" class="box item_123"></div>
    
  3. этот формат создает класс и идентификатор, используя ссылку на объект

    # app/controllers/items_controller.rb 
    @item = Item.find(123)
    
    .box[@item]
    
    <div id="item_123" class="box item"></div>
    
  4. Если вам нужно что-то префикс

    .box[@item, :custom]
    
    <div id="custom_item_123" class="box custom_item"></div>
    
  5. Если вам нужен пользовательский класс и генерация идентификаторов, вам нужно добавить в модель следующий метод.

    class CrazyUser < ActiveRecord::Base
      def haml_object_ref
        "customized_item"
      end
    end
    

    и тогда вы получите настроенный класс

    .box[@item]
    
    <div id="customized_item_123" class="box customized_item"></div>
    

см.:

Comments

    Ничего не найдено.