我有三个表,其中一个表是另外两个表之间的连接表。
我想创建一个特定职位与之关联的县名单。我正在尝试使用类似的东西:
<%= @counties.map { |county| county.id }.join(", ") %>
但这显然没有使用县化表。如何更改上面的代码来完成我需要的?另外,我想按ASC
顺序按字母顺序列出各县。
谢谢!
P.S。
我想我应该已经添加了如何在模型中链接我的表格。
答案 0 :(得分: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.(',') %>
答案 1 :(得分:1)
我不确定我是否理解正确。以下是你想要的吗?
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”也可以。