2014-01-29 31 views
1

我有三個表,其中之一是其他兩個表之間的連接表。Rails - 列表通過連接表逗號分隔

  1. 喬布斯:ID
  2. 縣:ID
  3. Countyizations:job_ib,county_id

我想創建縣列表的具體工作有關聯用。我試圖使用類似的東西:

<%= @counties.map { |county| county.id }.join(", ") %> 

但是,這顯然不是使用縣的表。我如何改變上面的代碼來完成我所需要的?另外,我想按照ASC的順序按字母順序列出各縣。

謝謝!

P.S.

我想我應該添加如何在我的模型中鏈接我的表。

  1. 喬布斯:的has_many:countyizations &的has_many:縣:通過=>:countyizations
  2. 縣:的has_many:countyizations &的has_many:就業,:通過=>:countyizations
  3. Counyizations:belongs_to的:縣& belongs_to:工作
+0

如果你有belongs_to協會decalred,你可以做jobs.county得到縣。解釋你的預期產出 –

回答

1

對於給定的job.id,您可以使用此操作返回所有由給定作業過濾的counties

<%= @counties.order('name asc').includes(:jobs).where('jobs.id = ?', job.id) %> 

替換根據您的需要job.id,你可以在控制器中設置一個@job實例變量,並在視圖中使用來代替。

甚至更​​好移到此代碼控制器動作:

# controller 
def show 
    job_name = ... 
    @counties = ... 

    @county_jobs = @counties.order('name asc').includes(:jobs).where(jobs.name = ?', job_name) 
end 

然後在您的視圖,以顯示所有具有搜索工作的縣:

<%= @counties.map(&:id).join.(',') %> 
0

我不知道如果我正確理解你。以下是你想要的嗎?

class Job < ActiveRecord::Base 
    has_many :countries, :through => :countyizations 
end 

class County < ActiveRecord::Base 
    has_many :jobs, :through => :countyizations 
end 

<%= @job.counties.sort{|a, b| a.name <=> b.name}.map{ |county| county.name }.join(", ") %> 

我認爲使用「has_many_and_belongs_to」而不是「has_many」也可以。