使用rails中的grape API生成HTML

时间:2013-11-26 08:41:12

标签: ruby-on-rails grape-api

我有一个要求,我需要从我的一个API生成/吐出HTML标记。我正在使用grape API但无法找到丢弃HTML标记的方法。我可以将内容类型指定为text / html并创建HTML标记,但是有更好的方法来实现这一点,就像渲染类似于下面的模板一样:

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

和'my_template'(HTML)可以处理页面的样子吗?渲染是GrapeAPI中未定义的方法,所以不确定我可以使用其他什么东西?

1 个答案:

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