Как мне создать динамические идентификаторы в Haml?
-
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 используются следующие способы
Обычным способом
.box.item#item
<div id="item" class="box item"></div>
Если вам нужна интерполяция, вы можете использовать этот формат
.box{id: "item_#{123}", class: "item_#{123}"}
<div id="item_123" class="box item_123"></div>
Этот формат генерирует класс и идентификатор с использованием ссылки на объект
# app/controllers/items_controller.rb @item = Item.find(123)
.box[@item]
<div id="item_123" class="box item"></div>
Если вам нужно добавить к чему-то префикс
.box[@item, :custom]
<div id="custom_item_123" class="box custom_item"></div>
Если вам нужна генерация пользовательского класса и идентификатора, вам нужно добавить в модель следующий метод.
class CrazyUser < ActiveRecord::Base def haml_object_ref "customized_item" end end
И тогда вы получите настроенный класс
.box[@item]
<div id="customized_item_123" class="box customized_item"></div>
Ссылаться: