#item
id = "item"でdivを作成します
.box#item
class = "box"およびid = "item"でdivを作成します
.box#="item "+x
class = "box"とコメント '#= "item" + x'でdivを作成します
.box#
="item"+x
「無効な要素:クラスとIDには値が必要です。」
Idを変数に設定するにはどうすればよいですか?
2つの方法があります。
長い形式の方法(idを通常の属性であるかのように定義します):
.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リファレンス を参照してください。
次の方法で、HAMLで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>
この形式は、オブジェクト参照を使用してクラスとIDを生成します
# 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>
カスタムクラスとIDの生成が必要な場合は、次のメソッドをモデルに追加する必要があります。
class CrazyUser < ActiveRecord::Base
def haml_object_ref
"customized_item"
end
end
そして、あなたはカスタマイズされたクラスを取得します
.box[@item]
<div id="customized_item_123" class="box customized_item"></div>
参照: