2010-11-09 15 views
1

При выполнении поиска в магазинах и разбиении на страницы результатов (10 на страницу) в левой части страницы мне нужно показать список сотрудников (без дубликатов), которые работают во всех магазинах в настоящее время отображается.массив массивов рубин на рельсах

В представлении у меня есть следующие, но он не чувствует себя как наиболее эффективный и показывает дублирующие сотрудников

- @shops.each do |shop| 
- shop.employees.each do |employee| 
%li = link_to "#{employee.name}", employee_path(employee) 

ответ

2
@shops.map(&:employees).flatten.uniq.each do |employee| 
    %li = link_to "#{employee.name}", employee_path(employee) 
end
+0

Спасибо! Еще один вопрос, как я могу упорядочить по алфавиту по имени сотрудника? – noddy

+1

просто замените 'uniq.'' 'uniq.sort_by (&: name) .' – DNNX

2

uniq?

- @shops.each do |shop| 
- shop.employees.uniq.each do |employee| 
%li = link_to "#{employee.name}", employee_path(employee) 
0

Этот тип запроса должно быть сделано в БД, а не в оперативной памяти.

class Shop 
    has_many :employees 
end 

class Employee 
    belongs_to :shop 
end 

Получить сотрудников для данной коллекции магазинов в вашем контроллере:

@employees = Employee.all_by_shop_id(@shops, :order => :name) 

сейчас на ваш взгляд:

[email protected] do |employee| 
    %li = link_to "#{employee.name}", employee_path(employee) 
Смежные вопросы