使い方
セットアップ
gem 'liquid'
を追加して、
$ bundle install
するだけ。
基本的な流れ
- 文字列のテンプレートを作成する
- モデルに liquid_methods を追加
- テンプレートをパースして表示
文字列のテンプレートを作成する
template = 'Hi!! {{ product.name }}'
モデルに liquid_methods を追加
- to_liquidメソッドが定義される
- liquid_methods に定義された属性のみ使える
model
class Product < ActiveRecord::Base
liquid_methods :name
end
テンプレートを表示
controller
@template = Liquid::Template.parse('Hi!! {{ product.name }}')
@template.render('product' => Product.first)
- テンプレート中で文法エラーが発生すると
Liquid::SyntaxError
の例外が発生する
>> Liquid::Template.parse("{{")
Liquid::SyntaxError: Liquid syntax error: Variable '{{' was not properly terminated with regexp: /\}\}/
フィルタ
シェルのパイプラインのようにテキストを変換していくことができる
module MarkupFilter
def textilize(string)
Markup.new(string).to_html
end
end
{{ '*strong*' | textilize }}
Tags
テンプレート中にロジックを埋め込む場合に使う
{{ foo }}
liquid-rails
Rails でファイルで呼び出せるようにする
コントローラからのアクセス
テンプレート中ではコントローラ中で利用可能なすべてのインスタンス変数とフィルタが利用可能となるため、制約できるメソッドが容易されている
メソッド名 | 使い方 |
---|---|
liquid_assings | テンプレート中で参照する名前をキーとインスタンスを値としたハッシュを渡す |
liquid_filters | 利用可能とするヘルパメソッドを記述する |