【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内で呼べるようになります。
うん、すっきり!