2013-05-15 59 views
1

在我的視圖中,我需要顯示每個城市的名稱以及該區域(城市服務)中每個名稱下方的可用服務。這涉及兩個查詢。但是,我怎樣才能將它們結合起來並顯示出簡單的列表?如何在Rails 3中結合這兩個查詢?

的...模型

class City < ActiveRecord::Base 
    has_many :city_services, :dependent => :delete_all 
end 

class CityService < ActiveRecord::Base 
    belongs_to :city 
end 

的...控制器這是我需要幫助。

@county = params[:county] 
@city_ids = City.where("county = ?", @county).map { |c| c.id } 
@city_services = CityService.where(:city_id => @city_ids) 

但是,也有每個城市的多種服務,所以我不能只列出city_services,或城市將被多次列出。

回答

2

試試這個(我假設城市表被稱爲城市):

@city_services = CityService.joins(:city).where(cities: {country: params[:country]}) 

如果你想有一個不同的列表:

@city_services = CityService.joins(:city).where(cities: {country: params[:country]}).uniq 
+0

八九不離十!除了每個城市有多個服務,所以在查詢結果中我有一些城市列出了兩次。是否有一些簡單的Ruby可用於將查詢結果與同一城市組合到一條記錄中,以便我可以在View中列出結果,而不會讓某些城市顯示兩次? – ac360

+0

例如,這個城市有兩個服務並顯示兩次,我怎麼能結合這兩個結果?:#,# ac360

+0

結果列表應該是什麼樣子?你是否想列出所有有服務的城市?每個城市的所有服務? – davidrac