Haml を含む Sinatra HAML テンプレートでテンプレート関数を作成できるようにしたいと考えています。これを行う方法または同様の方法はありますか?マークダウンでも使えたら最高です。
foo.haml
def foo(x)
%h2 something
%p something about #{x}
%h1 Herp de derp
= foo("mary")
= foo("us")
乾杯!
実際には、次のようなことができます。
# app.rb
require 'sinatra'
require 'haml'
helpers do
def foo(name)
haml = <<-HAML
#hello_block
Hello, #{name}
HAML
engine = Haml::Engine.new(haml)
engine.render
end
end
get '/' do
haml :index
end
# index.haml
= foo 'World'
関数は近いです。本当に必要なのは、パーシャルとして知られているものです。これらは、他のビュー内に配置できる定義済みのテンプレートです。たとえば、コメントの作成者、タイムスタンプ、コンテンツなどを表示するコメント パーシャルがあるとします。その後、特定の投稿のコメントごとにこのパーシャルをレンダリングできます。
基本的に、次のようになります
# _foo.haml.erb
%h2 somthing
%p= x
# index.haml.erb
%h1 Herp de derp
= render :partial => "foo", :locals => { :x => "mary" }
= render :partial => "foo", :locals => { :x => "us" }