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

问题描述 投票:0回答:2

我已经完成了

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

但是有什么方法可以将

%b aaaaaaa
包含在我的 ruby 文件本身中并渲染它。无需引用文件,例如无需参考 /views/index.haml ?

就像 CSS 可以让你拥有 CSS 外部,或者它可以让你在 html 文件内部拥有它一样。同样,Javascript 可以让你从外部导入 javascript,或者它可以让你在 html 文件内部拥有它。我问关于在 .rb 文件内部使用 HAML。可以吗?

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

ruby sinatra haml
2个回答
3
投票

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

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

1
投票

您应该能够使用

Haml::Engine#render
将 Haml 转换为 HTML,如下所示:

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

这使用了定界文档(

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

© www.soinside.com 2019 - 2024. All rights reserved.