3

我有一个要求,我需要从我的一个 API 生成/吐出 HTML 标记。我正在使用葡萄 API,但找不到丢弃 HTML 标记的方法。我可以将 content-type 指定为 text/html 并创建一个 HTML 标记,但是有没有更好的方法来实现这一点,比如呈现类似于下面的模板:

render template:'my_template' locals: {:data => data}  

'my_template' (HTML) 可以处理页面的外观吗?render 是 GrapeAPI 中未定义的方法,所以不确定我可以使用哪些其他东西?

4

1 回答 1

2

我认为使用仅 API 的框架来呈现 HTML 是一个非常糟糕的主意......

不过,您应该能够使用:txtcontent-type 来简单地呈现您所描述的字符串。

您可以为此使用 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 内容类型并编写某种格式化程序来做这种事情。

于 2013-11-26T13:47:02.743 回答