2

Haml を含む Sinatra HAML テンプレートでテンプレート関数を作成できるようにしたいと考えています。これを行う方法または同様の方法はありますか?マークダウンでも使えたら最高です。

foo.haml

def foo(x)
   %h2 something
   %p something about #{x}

%h1 Herp de derp
= foo("mary")
= foo("us")

乾杯!

4

2 に答える 2

2

実際には、次のようなことができます。

# 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'    
于 2012-05-30T01:10:45.257 に答える
1

関数は近いです。本当に必要なのは、パーシャルとして知られているものです。これらは、他のビュー内に配置できる定義済みのテンプレートです。たとえば、コメントの作成者、タイムスタンプ、コンテンツなどを表示するコメント パーシャルがあるとします。その後、特定の投稿のコメントごとにこのパーシャルをレンダリングできます。

基本的に、次のようになります

# _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" }
于 2012-05-22T04:49:20.677 に答える