2014-03-19 78 views
0

我在工作和公司之间有一对多的联系,我想在创建工作时选择公司名称并输入工作信息,以便在保存工作并返回公司时网页我看到的职位,但这个代码我得到什么Rails 4:一对多协会

这是我的公司模式

class Company < ActiveRecord::Base  
    has_many :jobs  
end 

这是工作模式

class Job < ActiveRecord::Base 
    belongs_to :company 
end 

这是工作形式争夺w^

<div class="form-group"> 

     <%= f.label :company %><br /> 
     <%= f.collection_select :company_id, Company.all, :id, :name, :prompt => "Choisir votre société" %> 

</div> 

<div class="form-group"> 
      <%= f.label :job_title, "Intitulé du poste", class: "jobs-newtitles" %><br> 
      <%= f.text_field :job_title, class: "form-control form-newjob" %> 
</div> 

,这是我公司放映视图

 <% if @company.jobs.blank? %> 

      <h3> this company have no job</h3> 

     <% else %> 

      <div class = "job-description-profile-section" > 
      <%= @company.jobs.job_title %> 
      </div> 

     <% end %> 
+2

是您的表单工作,即输入保存到数据库?通常你会做所有的工作循环而不是@ company.jobs.job_title – Pierre

回答

1

如果我正确理解你的问题,你的工作是正确保存在数据库中,但在访问中显示视图JOB_TITLE您收到错误公司。

@company.jobs将返回与特定公司关联的作业数组。

代替<%= @company.jobs.job_title %>(这肯定会给出一个错误)

在公司放映视图

,你需要的是

<% @company.jobs.each do |job| %> 
    <%= job.job_title %> 
<% end %> 

编辑

即使更新代码后,如果保存作业后屏幕上会显示this company have no job。那么这意味着company_id属性没有被存储用于特定作业。

确保您允许company_id保存在控制器中。

例如,

def job_params 
    params.require(:job).permit(:job_title, :company_id) 
end 
+0

是的你是对的,但即使这个解决方案返回空然而,谢谢你的建议 – userails

+0

你是什么意思的空?你看到'这家公司没有工作'吗?没有job_titles? –

+0

非常感谢你现在它的工作现在它是一个'强参数'的问题 – userails