显示所有有工作的公司

show all companies that have a job

我在工作和公司之间有关联,其中公司 has_many: jobs 和工作 belongs_to: company。现在我试图访问一个只有公司有工作的页面,所以为此我在我的控制器中有这个代码

def recruiting
  @companies = Company.all
end

这是我的招聘页面

<% @companies.each do |company| %> 
  <% unless company.job.nil? %>
   <%= link_to company.name, company_path(company), title: "#{company.name}" %>
<% end %> 
<% end %>

这不起作用并给我一个错误 undefined method job'

请将 <% unless company.job.nil? %> 替换为 <% if company.jobs.any? %>

当你有 has_one 关系时,形式是单数(工作)。在has_many中,有多个职位,所以形式是复数。

所以

company.jobs.nil?

如果您只想 return 有职位的公司,而不必担心视图中的if/unless 逻辑,您可以这样做:

def index 
  @companies = Company.joins(:jobs).uniq
end

但是,如果您想 return 有工作和没有工作的公司,您应该包括工作,这样您就不会在循环的每次迭代中进行 SQL 调用。

@companies = Company.includes(:jobs)