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

有两种方法:

长格式方式(将 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

您可以通过以下方式在 HAML 中设置idandclass

  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 回答