1

RABL API を使用してカスタム コレクションを構築しようとしています。idea_actions の配列を持つ Idea モデルがあります。RABL を使用してアイデア アクションのカスタム コレクションを追加する必要がありますが、現在のアクションを認識する必要があるため、child :idea_actions を使用できないようです。エラーの下のコード...どうすればカスタムコレクションを取得できますか?

object @idea

attributes *Idea.column_names

# need access to current action
node :idea_actions do
  @idea.idea_actions.each do |action|
    { :id => action.id}
    { :custom_stuff => action.some_method } if action.something?
  end
end

# can't do that...
# child :idea_actions
4

1 に答える 1

2

同様のユースケースがありました。これを機能させるために私がしなければならなかったこと:

解決策 1

  • 子属性をレンダリングするためのパーシャルを導入します ( _idea_action.rabl )

    attributes :id 
    if root_object.something?
      :custom_stuff => root_object.some_method 
    end
    
  • メイン ビューを変更して、新しいパーシャルを拡張します

    child(:idea_actions) { 
      extends("_idea_action")
    }
    

解決策 2

node :idea_actions do
  @idea.idea_actions.map do |action|
    { :id => action.id}.tap do |hash|
      hash[:custom_stuff] = action.some_method if action.something?
    end
  end
end

解決策 3

child :idea_actions do
  attributes :id
  node(:custom_stuff, :if => lambda {|action| action.something?}) do |action|
    action.some_method
  end
end
于 2013-03-13T23:47:18.437 に答える