Slim テンプレートでの変数の出力の方法は、こんな感じに=で出力することができます。
div
p= @value
文章中や、属性中に変数展開させる場合は#{変数名}で出力します。
p a.btn src="edit/#{@id}" 編集
しかし、上記の方法ではHTMLタグや"などを含んだ文字列を出力しようとするとエスケープされたものが出力されてしまいます。自動的にエスケープしてくれるので便利なのですが、改行がある文章をそのまま出力したいなどといった場合には不都合があります。
EX:
@value = '<b>"タグ"を含んだテキスト。</b>'
p= @value p 文章中に変数展開「#{@value}」
↓ 出力されるHTML
<p><b>"タグ"を含んだテキスト。</b></p> <p>文章中に変数展開「<b>"タグ"を含んだテキスト。</b>」</p>
エスケープせずに出力する方法
エスケープせずに変数を出力する場合は == で、
エスケープせずに文章中に変数展開をする場合は #{{変数名}} と二重にすれば記述すればOK。
EX:
@value = '<b>"タグ"を含んだテキスト。</b>'
p== @value p 文章中に変数展開「#{{@value}}」
↓ 出力されるHTML
<p><b>"タグ"を含んだテキスト。</b></p> <p>文章中に変数展開「<b>"タグ"を含んだテキスト。</b>」</p>
まとめ
| エスケープあり | エスケープなし | |
|---|---|---|
| 変数出力 | = |
== |
| 変数展開 | #{変数名} |
#{{変数名}} |
好んで使ってたSlimと記述方法が似てるpug (旧jade)ではエスケープしない場合は!=や!{変数名}だったので、同じだろうと思ってハマってしまいました。
Rubyの学習が全然進んでないので、もくもく会とかに参加しよう…
後、記事と全然関係ないのだけどSublimeTextでRuby書いてると、シンタックスハイライトの処理なのかめちゃくちゃ入力と表示にラグ発生するのだけれど解決方法とかあるのだろうか…?
- slim/README.jp.md at master · slim-template/slim · GitHub
- Slim - A Fast, Lightweight Template Engine for Ruby
- 速習テンプレートSlim(HTML作成編) - Qiita
- Slim入門をして書き方を練習をしました - Qiita

- 作者: まつもとゆきひろ,David Flanagan,卜部昌平(監訳),長尾高弘
- 出版社/メーカー: オライリージャパン
- 発売日: 2009/01/26
- メディア: 大型本
- 購入: 21人 クリック: 356回
- この商品を含むブログ (129件) を見る