我可以在Sinatra中将内联模板作为字符串获取吗?

时间:2017-01-04 17:48:19

标签: ruby sinatra

动机

Sinatra的内联模板非常方便(对我而言)。

如果可以将内容提取为字符串, 可以预期更多的应用程序。

实施例

在此代码中显示我的意图

require "sinatra"
require "sinatra/json"
require "yaml"

get "/" do
  content_type :json
  data = YAML.load inline_template_as_raw_string(:my_yaml)
  json data
end

__END__
@@my_yaml
foo:
  bar: baz

@@my_something
hello

任何想法?

1 个答案:

答案 0 :(得分:0)

Sinatra将原始加载的模板存储在名为templates的设置变量中。您可以按如下方式访问它们:

require "sinatra"
require "sinatra/json"
require "yaml"

get "/" do
  content_type :json
  data = YAML.load settings.templates[:my_yaml][0]
  json data
end

__END__
@@my_yaml
foo:
  bar: baz

@@my_something
hello

settings.templates包含一个Hash,其中模板名称为键,数组包含原始模板和定义它的行号。