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

StackOverflow https://stackoverflow.com/questions/2217583

  •  19-09-2019
  •  | 
  •  

Вопрос

#item

создает div с идентификатором="item"

.box#item

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

.box#="item "+x

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

.box#
  ="item"+x

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

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

Это было полезно?

Решение

Есть два способа:

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

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

Ссылаться:

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top