77
#item

id="item" で div を作成します

.box#item

class="box" および id="item" で div を作成します

.box#="item "+x

class="box" とコメント '#="item"+x' で div を作成します

.box#
  ="item"+x

「不正な要素: クラスと ID には値が必要です。」をスローします。

ID を変数に設定するにはどうすればよいですか?

4

2 に答える 2

138

次の 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 リファレンスを参照してください。

于 2010-02-07T17:48:28.877 に答える
8

idclassを 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. この形式は、オブジェクト参照を使用してクラスと ID を生成します

    # 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. カスタム クラスと 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>
    

参照:

于 2018-05-30T07:44:41.357 に答える