Квадратные скобки идут после объявления тега и содержат в себе объект Ruby, который используется для объявления классов и идентификаторов тега. Класс устанавливается в класс объекта (метод camelCase будет заменен на нижние подчеркивания) и ID устанавливается в класс объекта, после значений методов #to_key или #id (именно в таком порядке). Это особенно полезно для элементов, которые представляют экземпляры моделей Active Model. Кроме того, если указан второй аргумент, то он будет использоваться в качестве префикса как для класса, так и для идентификатора. Например:

# file: app/controllers/users_controller.rb

def show
  @user = CrazyUser.find(15)
end

-# file: app/views/users/show.haml

%div[@user, :greeting]
  %bar[290]/
    Hello!

компилируется в

<div class='greeting_crazy_user' id='greeting_crazy_user_15'>
  <bar class='fixnum' id='fixnum_581' />
  Hello!
</div>

Если вам необходимо, чтобы класс был отличным от указанного класса объекта, то вы можете применить к объекту метод haml_object_ref:

# file: app/models/crazy_user.rb

class CrazyUser < ActiveRecord::Base
  def haml_object_ref
    "a_crazy_user"
  end
end

-# file: app/views/users/show.haml

%div[@user]
  Hello!

компилируется в

<div class='a_crazy_user' id='a_crazy_user_15'>
  Hello!
</div>

Атрибут :class может быть использован совместно со ссылкой на объект. В скомпилированном теге все классы будут объединены и добавлены.

- user = User.find(1)
%p[user]{:class => 'alpha bravo'}

компилируется в

<p id="user_1" class="alpha bravo user"></p>
На сайте функционирует система проверки ошибок. Обнаружив неточность в тексте, выделите ее и нажмите Ctrl + Enter. Также отправить оповещение об ошибке можно, нажав на эту ссылку.