2

私はruby1.9.3p125とrails3.2.8を使用していて、今日gemfileにrablを追加したので、最新の状態になっているはずです。

私は、jsonをリクエスターに直接送信したいという単純な状況でRABLを使用しました。これで、rablを使用してjsonを生成し、それを口ひげでレンダリングしたいという状況になりました。

これまで、私は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

口ひげは文字列ではなくオブジェクトを期待していると思います。

于 2012-11-14T14:16:02.873 に答える