我需要为表单创建一个选择框,其中列出了所有父项的所有子记录。我如何在我的控制器中执行此操作?我正在考虑下面的答案,但它的返回"未定义的方法为零:NilClass"
before_action :get_children
def get_children
@parents = current_user.parents.all
@children = @parents.children.all
end
答案 0 :(得分:1)
@parents
是一个数组,因此该数组的子节点为零。
所以你必须使用某种类型的循环:
def get_children
children = []
@parents = current.user.parents.all
@parents.each do |child|
children << child
end
return children
end
像这样的工作。
答案 1 :(得分:0)
如果你想要一个数组:
@children = @parents.map(&:children).flatten.uniq
如果你想要一个ActiveRecord :: Relation(假设你的模型被称为Thing,并且每个东西都属于父级):
@children = Thing.where(parent_id: @parents)
答案 2 :(得分:0)
您可以执行以下操作:
def get_children
@parents = current_user.parents.all
@children = Children.where(parent_id: @parents.pluck(:id).uniq)
end