2016-05-27 18 views
2

すべての親のすべての子レコードをリストするフォームの選択ボックスを作成する必要があります。コントローラでこれをどうやって行うのですか?私は、以下の答えを考えていますが、その返す「未定義のメソッドはnil:NilClass」その配列の子どもたちがnilになるのですべての親レコードのすべてのレコードを取得する方法

before_action :get_children 

def get_children 
    @parents = current_user.parents.all 
    @children = @parents.children.all 
end 
+0

'@ parents'は配列なので、その配列の子はnilになります。 – agustaf

答えて

0

@parentsは配列です。 だから、のようなループのいくつかのタイプを使用する必要があります:

def get_children 
    children = [] 
    @parents = current.user.parents.all 
    @parents.each do |child| 
    children << child 
    end 
    return children 
end 

このダメ作品のようなもの。

0

あなたは配列したい場合:

@children = @parents.map(&:children).flatten.uniq 

をあなたはActiveRecordの::関係(モデルはシングと呼ばれていると仮定すると、親belongs_toのそれぞれの事を)したい場合:

@children = Thing.where(parent_id: @parents) 
0

あなたが行うことができます次のようになります。

def get_children 
    @parents = current_user.parents.all 
    @children = Children.where(parent_id: @parents.pluck(:id).uniq) 
end 
関連する問題