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