使用 Ruby 和 Sinatra,是否可以以 "internal" 或 "inline" 的方式使用 HAML?
Using Ruby and Sinatra, Is it possible to use HAML in an "internal" or "inline" manner?
我完成了 gem install sinatra
和 gem 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 文件的内部。我想问的是在 .rb 文件内部使用 HAML。可能吗?
我知道 HAML 旨在作为一种模板语言,用于将数据注入...但它也是一种 shorthand 用于更简洁地编写 HTML。
您应该可以使用 Haml::Engine#render
将 Haml 转换为 HTML,如下所示:
get '/abc2' do
Haml::Engine.new(<<-Haml).render(binding)
%b aaaaaa
Haml
end
这使用了 heredoc(<<-Haml
行和结束 Haml
之间的所有内容。binding
是一个特殊变量,基本上指的是当前范围。
对于小型应用程序,您可以在脚本末尾添加视图,这样就没有外部文件了。
get '/abc' do
haml :hello
end
__END__
@@ hello
%h1= "Hello there"
我完成了 gem install sinatra
和 gem 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 文件的内部。我想问的是在 .rb 文件内部使用 HAML。可能吗?
我知道 HAML 旨在作为一种模板语言,用于将数据注入...但它也是一种 shorthand 用于更简洁地编写 HTML。
您应该可以使用 Haml::Engine#render
将 Haml 转换为 HTML,如下所示:
get '/abc2' do
Haml::Engine.new(<<-Haml).render(binding)
%b aaaaaa
Haml
end
这使用了 heredoc(<<-Haml
行和结束 Haml
之间的所有内容。binding
是一个特殊变量,基本上指的是当前范围。
对于小型应用程序,您可以在脚本末尾添加视图,这样就没有外部文件了。
get '/abc' do
haml :hello
end
__END__
@@ hello
%h1= "Hello there"