我有一个要求,我需要从我的一个API生成/吐出HTML标记。我正在使用grape API但无法找到丢弃HTML标记的方法。我可以将内容类型指定为text / html并创建HTML标记,但是有更好的方法来实现这一点,就像渲染类似于下面的模板一样:
render template:'my_template' locals: {:data => data}
和'my_template'(HTML)可以处理页面的样子吗?渲染是GrapeAPI中未定义的方法,所以不确定我可以使用其他什么东西?
答案 0 :(得分:2)
我认为使用仅限API的框架来呈现HTML ...
是一个非常糟糕的主意尽管如此,您应该可以使用:txt
内容类型来简单地渲染您所描述的字符串。
您可以使用ERB,因为它是标准库的一部分并且非常易于使用:
require "erb"
class Template
attr_reader :name, :data
def initialize(name, data)
@name = name
@data = data
end
def build
raw = File.read("templates/#{name}.erb")
ERB.new(raw).result(binding)
end
end
据我所知,grape会自动使用实体的to_s
方法来渲染:txt
,因此您可以在模型中实现类似的内容:
def to_s
Template.new(self.class.to_s.downcase, self)
end
也可以注册html内容类型并编写某种格式化程序来执行此类操作。