كيف أقوم بإجراء معرفات ديناميكية في Haml؟
-
19-09-2019 - |
سؤال
#item
يخلق DIV مع ID = "العنصر"
.box#item
يخلق DIV مع Class = "Box" و ID = "العنصر"
.box#="item "+x
يخلق DIV مع Class = "Box" وتعليق "# =" عنصر "+ 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">
انظر مرجع هامل للمزيد من المعلومات.
نصائح أخرى
يمكنك ضبط id
و class
في هامل الطرق التالية
الطريق الطبيعي
.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>
أشير: