ruby-on-rails - Rails - 通过连接表以逗号分隔的列表

标签 ruby-on-rails postgresql list

我有三个表,其中一个是另外两个表之间的连接表。

  1. 职位:id
  2. 县:id
  3. 县化:job_ib、county_id

我想创建一个特定工作关联的县列表。我正在尝试使用类似的东西:

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

但这显然没有使用 countyizations 表。我怎样才能改变上面的代码来完成我需要的?另外,我想按 ASC 顺序按字母顺序列出县。

附言

我想我应该添加我如何在我的模型中链接我的表。

  1. 工作:has_many :countyizations & has_many :counties, :through => :countyizations
  2. 县:has_many :countyizations & has_many :jobs, :through => :countyizations
  3. 县化:belongs_to :county & belongs_to :job

最佳答案

对于给定的 job.id,您可以使用它返回所有由给定工作过滤的 counties

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

根据您的要求替换 job.id,您可以在 Controller 中设置一个 @job 实例变量并在 View 中使用。

或者甚至更好地将此代码移动到 Controller 操作:

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

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

然后在你的 View 中,显示所有拥有搜索工作的县:

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

关于ruby-on-rails - Rails - 通过连接表以逗号分隔的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21422219/

相关文章:

json - 带有 postgres 的 Django 的非关系数据库模式

Java过滤器列表,因此它只包含与另一个列表中具有相同属性的对象

R - 列表与重复项的组合?

ruby-on-rails - Rails 3.1 .css.less 缓存错误

ruby-on-rails - 发送电子邮件时 Heroku 超时

ruby-on-rails - LoadError : dlopen(digest/sha1. bundle):找不到符号:_rb_Digest_SHA1_Finish

sql - 如何插入一条记录并返回主键来更新另一个表中的外键?

sql - 具有多个值列的数据透视表

python - 计算按日期和标签分组的行中列表元素的频率

ruby-on-rails - rails 包括多个 2 级关联