TL;DR
%div[user]
<div class="user" id="user_1">
</div>
概要
公式ドキュメントより引用
# 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>
こうなります。
一体何が起きているのか
コードを読めば単純明快でした。
やっていることは、
- オブジェクトのクラス名を取得し、
- to_key
またはid
メソッドでidを取得し、
- それらを(もしprefixがあるならそれも含めて)ハッシュにして返す
ね、簡単でしょう?
残された謎
公式ドキュメントの例にあるFixnum
はto_key
もid
も持ってないんだけど、なんで581
が返ってるんだろう…?