显示所有有工作的公司

时间:2015-01-16 18:12:32

标签: ruby-on-rails ruby ruby-on-rails-4 associations

我在公司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'

3 个答案:

答案 0 :(得分:4)

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

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

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

@companies = Company.includes(:jobs)

答案 1 :(得分:2)

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

答案 2 :(得分:0)

当你有一个has_one关系时,表单是单数(作业)。在has_many中,有多个作业,因此表单是复数形式。

所以

company.jobs.nil?