0

必要なノードが属性またはメソッドの場合、extends を呼び出すのは簡単です。

しかし、それが属性ではない場合はどうなりますか? インスタンス変数または attr アクセサーの可能性があります。

以下の例:


// dispatches is an attribute of the class
child :dispatches => :dispatches do
  extends "/dispatches/_base"
end

# completed post is not an attribute of the class
if @completed_post
  node(:post) do |post|
    {
      id: @completed_post.id.to_s,
      _id: @completed_post.id.to_s,
      display_text: @completed_post.display_text,
      # and many others
    }
end

この必要な追加ノードは、@instance または @object[:some_attribute] のいずれかです。

4

1 に答える 1

2

これが役立つかどうかはわかりませんが、次のように「ローカル」を拡張テンプレートに渡すことができます。

extends('posts/show', :locals => { :hide_comments => true })

次に、posts/showテンプレートで:

# app/views/posts/show.json.rabl
object @post

node(:comments) { |post| post.comments } unless locals[:hide_comments]
于 2013-09-08T08:54:41.187 に答える