2015-08-22 3 views
0

У меня есть две моделей Blog и Article следующихNoMethodError: не определен метод «идентификатор» для # <Массив: 0x007f725c52af50>

class Blog < ActiveRecord::Base 
    has_many :articles 
end 

class Article < ActiveRecord::Base 
    belongs_to :blog 
end 

И мой метод приборной панели выглядит следующим образом: [Я хочу, чтобы извлечь все статьи все последовавшие блоги в объекте @article]

@f_blogs = current_user.followees(Blog) #Socialization gem method 
@f_blogs.each do |blog| 
    @blogs ||= [] 
    @blogs << Blog.where('id == ?',blog.id).includes(:articles) 
end 
@articles = @blogs.map(&:articles) 

Но это возвращает эту ошибку

NoMethodError: undefined method 'id' for #<Array:0x007f725c52af50> 

Консоль дает выходные данные в ActiveRecord::Associations::CollectionProxy

Как получить доступ к этому массиву? Нужна помощь !!

+0

Какой результат переменной '@ f_blogs'? Похоже, это массив массивов. –

+0

[# , # ] – Mr94

+0

Вы пытались передать объект блога только? Например, @blogs << Blog.where («id ==?», Блог) .includes (: articles) – moeabdol

ответ

1

Вы можете реорганизовать это много, как вы можете передать массив идентификаторов в ИНЕКЕ, например, так:

@blogs = Blog.where(id: @f_blogs.pluck(:id)).include(:articles) 

Все вместе, которые могли бы только выглядеть следующим образом:

@f_blogs = current_user.followees(Blog) #Socialization gem method 
@blogs = Blog.where(id: @f_blogs.pluck(:id)).include(:articles) 
@articles = @blogs.map(&:articles) 

Хотя Я не совсем понимаю, что это за последняя строка map, поскольку вы уже готовы загружать статьи для каждого блога.

+0

Он выдает ошибку NoMethodError: undefined method 'pluck 'for nil: NilClass – Mr94

+0

, что означает, что' @ f_blogs' - это nil, I' m не знакомы с камнем социализации, но вы вошли в систему? – Anthony

+0

Вторая строка кода вызывает ошибку TypeError: неправильный тип аргумента Символ (ожидаемый модуль) – Mr94