我希望能夠在自己包含haml的Sinatra HAML模板中創建模板函數。有沒有辦法做到這一點或類似的東西?如果它也可以使用降價,它會很酷。在Sinatra中使用HAML的模板函數
foo.haml
def foo(x)
%h2 something
%p something about #{x}
%h1 Herp de derp
= foo("mary")
= foo("us")
乾杯!
我希望能夠在自己包含haml的Sinatra HAML模板中創建模板函數。有沒有辦法做到這一點或類似的東西?如果它也可以使用降價,它會很酷。在Sinatra中使用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'
是的,我也發現了helper函數,但是我希望它們在haml文件中被_defined定義。雖然謝謝! –
我知道泛音和正在使用他們現在解決了問題,但我確實在尋找文件中可以做的事情,以避免產生大量文件。我發現一個可能的解決方案是content_for,但我一直無法使它工作。 –