class

JbuilderTemplate

Inherits Jbuilder < Reference < Object

Constructors

Instance methods

array!(collection : Enumerable | Nil, *, partial : String, as_local : String | Symbol | Nil = nil, cached : Bool = false, layout : String | Nil = nil, spacer_template : String | Nil = nil) : Nil

json.array! posts, partial: "post", as: :post

Source
cache!(key : String | Symbol | Array(String | Symbol) | Nil = nil, expires_in : Time::Span | Nil = nil, &) : Nil

json.cache! "cache-key" [, expires_in: span] do ... end Хит — фрагмент из кэша мержится в текущий скоп (Ruby: merge! value).

Source
cache_if!(condition : Bool, key : String | Symbol | Array(String | Symbol) | Nil = nil, expires_in : Time::Span | Nil = nil, &) : Nil

json.cache_if! condition, "cache-key" do ... end

Source
cache_root!(key : String | Symbol | Array(String | Symbol) | Nil = nil, expires_in : Time::Span | Nil = nil, &) : Nil

json.cache_root! "cache-key" do ... end — кэш корневого JSON строкой.

Source
partial!(partial : String, locals : Hash | Nil = nil) : Nil

json.partial! "partial", {"content" => "hello"} — партиал с locals (Ruby-форма "json.partial! 'partial', content: 'hello'" — именованные произвольные ключи в Crystal невыразимы; locals передаются Hash'ем).

Source
partial!(partial : String, *, collection : Enumerable | Nil, as_local : String | Symbol | Nil = nil, cached : Bool = false, layout : String | Nil = nil, spacer_template : String | Nil = nil) : Nil

json.partial! "post", collection: posts, as: :post [, cached: true]

Source
partial!(*, partial : String, collection : Enumerable | Nil, as_local : String | Symbol | Nil = nil, cached : Bool = false, layout : String | Nil = nil, spacer_template : String | Nil = nil) : Nil

json.partial! partial: "post", collection: posts, as: :post

Source
set!(key : String | Symbol, object : Enumerable, *, partial : String, as_local : String | Symbol | Nil = nil, cached : Bool = false, layout : String | Nil = nil, spacer_template : String | Nil = nil) : Nil

json.posts posts, partial: "post", as: :post (inline-партиал под ключом)

Source
set!(key : String | Symbol, object : Nil, *, partial : String, as_local : String | Symbol | Nil = nil, cached : Bool = false) : Nil

nil-коллекция → [] (Ruby: _set_inline_partial object.nil? → [])

Source
set!(key : String | Symbol, object, *, partial : String, as_local : String | Symbol | Nil = nil) : Nil

json.author post, partial: "posts/post", as: :post — одиночный объект

Source
target!

target! — JSON-строка.

Source

Macros

compile_partials(partials)

--- Регистрация партиалов (compile-time) ----------------------------------

JbuilderTemplate.compile_partials({ "post" => {path: "app/views/posts/_post.json.jbuilder", locals: {"post" => Post}}, "racers/racer" => {path: "app/views/racers/_racer.json.jbuilder", locals: {"racer" => Racer}}, })

Тело файла вставляется в метод как есть (DSL-вызовы json.* — валидный Crystal); партиал пишет в общий билдер через аргумент json — та же семантика, что options[:locals][:json] = self в Ruby.

Source