2013-11-26 28 views
2

我有一個需求,我需要從我的一個API生成/吐出HTML標記。我使用葡萄API,但無法找到一種方法來拋出HTML標記。我可以指定內容類型爲text/html,並創建一個HTML標記,但有沒有更好的方式來做到這一點像渲染類似模板下面:在rails中使用grape API生成HTML

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

和「my_template」(HTML),可以照顧頁面的外觀如何? render是GrapeAPI中的一個未定義的方法,所以不確定我可以使用哪些其他的東西?

回答

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 

據我讀,葡萄自動使用實體的to_s方法來呈現:txt,所以你可以實現這樣的事情在你的模型:

def to_s 
    Template.new(self.class.to_s.downcase, self) 
end 

也可能可以註冊一個html內容類型,寫某種格式的,做這種東西。