Ruby Sinatra中带有HAML的模板函数

Ruby Sinatra中带有HAML的模板函数,ruby,sinatra,haml,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") 干杯 函数很接近,您真正需要的是称为部分的。这些是预定义的模板,可以放置在其他视图中。例如,您可能会有一个注释部分来显示注释的作者、时间戳、

我希望能够在Sinatra HAML模板中创建包含HAML的模板函数。有没有办法做到这一点或类似的事情?如果它也能和降价一起使用,那就太酷了

foo.haml

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

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

干杯

函数很接近,您真正需要的是称为部分的。这些是预定义的模板,可以放置在其他视图中。例如,您可能会有一个注释部分来显示注释的作者、时间戳、内容等。然后您可以为特定帖子上的每个注释呈现该部分

基本上,您将得到以下结果

# _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" }

实际上,你可以这样做:

# 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'    
#app.rb
需要“sinatra”
需要“haml”
帮手
def foo(姓名)

haml=我知道partials,现在正在使用它们来解决这个问题,但是我真的在这里的文件中寻找一些我可以做的事情,以避免有很多文件。我找到的一个可能的解决方案是content_,但我一直无法让它工作。是的,我也找到了helper函数,但我希望它们在haml文件中定义。谢谢你!