在Rails中使用Grape API生成HTML

3

我有一个需求,需要从我的API中生成/输出HTML标记。我正在使用grape API,但无法找到一种方法来抛出HTML标记。我可以指定content-type为text/html并创建HTML标记,但是否有更好的方式来实现这一点,比如渲染类似于下面的模板:

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

而且 'my_template'(HTML)可以处理页面的外观?在GrapeAPI中,render是一个未定义的方法,所以不确定我还能使用什么其他内容?

1个回答

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内容类型并编写某种格式化程序来执行此类操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接