模板在Sinatra中与HAML一起使用

时间:2012-05-22 01:51:56

标签: ruby sinatra haml

我希望能够在Sinatra HAML模板中创建模板函数,这些模板本身包含haml。有没有办法做到这一点或类似的东西?如果它也适用于降价,那就太酷了。

foo.haml

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

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

干杯!

2 个答案:

答案 0 :(得分: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'    

答案 1 :(得分: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" }