3

API の 1 つから 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をレンダリングするのはかなり悪い考えだと思います...

:txtそれにもかかわらず、コンテンツタイプを使用して、説明したように文字列を単純にレンダリングできるはずです。

ERB は標準ライブラリの一部であり、非常に使いやすいため、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 コンテンツ タイプを登録して、このようなことを行う何らかのフォーマッタを作成することも可能です。

于 2013-11-26T13:47:02.743 に答える