2010-11-09 122 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 2010-11-09 09:08:39

+1

只是用'uniq.sort_by(&:name)替換'uniq.' .' – DNNX 2010-11-09 09:10:45

2

uniq

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

這種類型的查詢應在DB,而不是在內存中完成。

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)