Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RABL-自定义集合_Ruby On Rails_Ruby_Rabl - Fatal编程技术网

Ruby on rails RABL-自定义集合

Ruby on rails RABL-自定义集合,ruby-on-rails,ruby,rabl,Ruby On Rails,Ruby,Rabl,我正在尝试使用RABLAPI构建自定义集合。我有一个想法模型,其中包含一系列想法行动。我需要使用RABL附加idea操作的自定义集合,但是我似乎无法使用child:idea\u操作,因为我需要知道当前操作。下面的代码显示错误。。。任何解决方案如何获得我想要的自定义集合 object @idea attributes *Idea.column_names # need access to current action node :idea_actions do @idea.idea_act

我正在尝试使用RABLAPI构建自定义集合。我有一个想法模型,其中包含一系列想法行动。我需要使用RABL附加idea操作的自定义集合,但是我似乎无法使用child:idea\u操作,因为我需要知道当前操作。下面的代码显示错误。。。任何解决方案如何获得我想要的自定义集合

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

我有一个类似的用例。这就是我要做的,让它工作:

解决方案1

  • 引入用于呈现子属性的部分属性(\u idea\u action.rabl

  • 修改主视图以扩展新的局部视图

    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

只有当我想要子模型的标准属性,而不是自定义/条件的东西时,这才有效。更新了答案,看一看。试一下。给定上下文中的root_对象是子项的集合,而不是单个对象。
child :idea_actions do
  attributes :id
  node(:custom_stuff, :if => lambda {|action| action.something?}) do |action|
    action.some_method
  end
end