【Ruby】slim からHTML生成術 その2

~ 前回の続き

slim はrubyのコードを直接埋め込めたりできます。

演算サンプルコード

h1 test
div hello slim
div = 1 + 1

= より後ろの文をRubyのコードと認識してくれるらしく、結果は下記のように出力されます。
2つめのdivタグの結果が2と出力されてますね。

"<h1>test</h1><div>hello slim</div><div>2</div>"

変数埋め込みサンプルコード

h1 = title
div = "hello #{name}" 

上記のようなslimサンプルで titleやname変数などを使用して、動的にテンプレートを生成したい場合はどうすればよいでしょうか?
RailsとかSinatraとかの記事はかなりあるのに(コントローラでクラス変数を作ればあとは動的に)、Ruby単体での埋め込み方法がなかなか見つからない・・・。

答え

requrie 'slim'
p Slim::Template.new("test_slim.slim").render(self, {tilte: "Sample", name: "shio_chan"})
"<h1>Sample</h1><div>hello shio_chan</div>"

render の第2引数にハッシュを渡すと、slim内で呼べるようになります。
うん、すっきり!