Как сделать динамические идентификаторы в Haml?
#item
создает div с id= "item"
.box#item
создает div с class= "box"и id="item"
.box#="item "+x
создает div с class= "box"и комментарием '#="item" +x'
.box#
="item"+x
бросает " незаконный элемент: классы и идентификаторы должны иметь значения."
как мне установить идентификатор переменной?
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 следующие способы
обычным способом
.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>см.:
Comments