2012-01-11 2 views
0

에 속는을 제거 할 방법은 레일내가 루비

- @companies.people.each do |person| 
    %p 
    Hello there : 
    = "#{person.manager.name} (#{person.manager.email})" 

하지만 난 단지 관리자가 한 번 이름을 인쇄 할 .....하지만 많은 사람들이 같은 관리자를 가지고 그들이이 루프를 dupes를 인쇄하는 방법 ... 여기 dupes를 인쇄하지 않는 방법에 대한 아이디어

+0

당신이 뭔가를 찾고있다 비슷한 http://stackoverflow.com/questions/8793152/rails-3-1-has-many-through에 -complex-ordering – dbKooper

답변

1

글쎄, 아마도 이것이 잘못된 방법 일 것 같습니다. 각 사람마다 관리자 이름을 복제하지 않으려면 관리자 아래에 사람을 그룹화해야 할 수 있습니다.

그러면보기가 계층 적으로 보일 것입니다. 관리자 아래의 사람들도 마찬가지로 시각적으로 배치되어야합니다.

1

당신은 uniq 방법으로이 작업을 수행 할 수 있습니다 :

@companies.people.map{|p| p.manager}.uniq 
5

을 오히려하지 않을까요 :

@companies.managers do |manager| 
... 

그래서 당신이 managers 방법으로 기본 모델 (? 회사)를 개정 할 필요가 . 그리고 그것이 스코프, 모델 관계 또는 알폰소의 무차별 대항 응답을 통해 이루어질지라도, 우리는 결정할 충분한 정보가 없습니다. 그러나 어떤 경우이든이 로직은 모델에서 누락 된 것이고보기에는 노출되지 않습니다.

3
class Company 
    scope :managers, ->(){where(manager: true)} 
end 

module EmployeeListViewHelper 
    def manager_list 
    Company.managers.each do |m| 
     content_tag(:p, "Hello There : #{m.name} #{m.email}") 
    end 
    end 
end 

그런 다음이보기에 :

= manager_list 
+0

범위 예제 및 해당 뷰 도우미에 +1. –