2

我正在使用 ruby​​ 1.9.3p125 和 rails 3.2.8 并将 rabl 添加到我的 gemfile 中,所以它应该是最新的。

我在一个简单的情况下使用了 RABL,我希望将 json 直接发送给请求者。现在我有一种情况,我想使用 rabl 生成 json,然后用 mustache 渲染它。

在此之前,我一直在使用 as_json (在模型中被覆盖)来生成 json,因此:

 <%= render 'scrollable', :mustache=>{photos: @page.photos.as_json} %>

_scrollable.html.mustache 中有一个合适的模板,我仍然希望使用它。

我已经为这些照片编写了 RABL 模板:

# _photo.json.rabl
object @photo do
  attributes :src, :name, :height
  attributes :drawing

  node do |p|
    { :label => p.caption || p.name }
  end

  child :components do
    attributes :name, :height
  end

end

# _photos.json.rabl
collection @photos do
  extend 'photos/photo'
end

如何调用这些模板?

  <%= render 'scrollable', :mustache =>render(@page.photos, template: 'photos', formats: '[json]', handlers: ['rabl'])  %>

返回

Missing partial ..../photos/photo with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :coffee, :mustache, :rabl]}

有趣的是,它似乎已经失去了我想要格式的事实:json

4

1 回答 1

4

我正在做类似的事情,但直接调用 Rabl 渲染器并要求它提供哈希而不是 json 字符串,然后将其用作胡子数据......

render 'posts.mustache', :mustache=>Rabl::Renderer.new('posts.rabl', @posts, :view_path => 'app/views', :format => 'hash').render

我认为 mustache 期待一个对象而不是字符串。

于 2012-11-14T14:16:02.873 回答