使用Ruby和Sinatra,是否可以在内部使用HAML"或"内联"方式?

时间:2017-11-24 18:47:48

标签: ruby sinatra haml

我已完成gem install sinatragem install haml

我有这个.rb文件

require 'sinatra'

get '/abc2' do
"<b>aaaaaaaaaaaaa</b>"
end

现在说我想要那行HTML但是在HAML中。而不是外部

我知道我能做到

get '/abc' do
  haml :index  # /views/index.haml 
end

而index.haml可能有一行haml %b aaaaaaa

但是有什么方法可以在我的ruby文件中包含%b aaaaaaa并让它呈现。无需引用文件,例如无需参考/views/index.haml?

像CSS一样让你拥有CSS外部,或者它允许你在html文件中内部使用它。同样,Javascript允许你从外部导入javascript,或者它让你在html文件内部..好吧我&# 39; m询问在内部使用HAML到.rb文件。有可能吗?

我知道HAML旨在作为一种模板语言,用于将数据注入...但它也是更简洁地编写HTML的简写。

2 个答案:

答案 0 :(得分:2)

对于小型应用,您可以在脚本末尾添加视图,这样就没有外部文件了。

get '/abc' do
  haml :hello
end
__END__
@@ hello
%h1= "Hello there"

答案 1 :(得分:1)

您应该可以使用Haml::Engine#render将Haml转换为HTML,如下所示:

get '/abc2' do
  Haml::Engine.new(<<-Haml).render(binding)
    %b aaaaaa
  Haml
end

这使用了heredoc(<<-Haml行和结束Haml之间的所有内容。binding是一个特殊变量,基本上是指当前范围。