Rails 4:一对多关联

时间:2014-03-19 16:45:28

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

我在工作和公司之间有一对多的关联,我想在创建工作时选择公司名称并输入工作信息,这样在保存工作并返回公司页面时,我会看到工作头衔,但是这个代码我什么都没得到

这是我公司的模特

class Company < ActiveRecord::Base    
    has_many :jobs    
end

这是工作模式

class Job < ActiveRecord::Base
    belongs_to :company
end

这是工作表单视图

<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 %>

1 个答案:

答案 0 :(得分:1)

如果我正确理解了您的问题,您的作业会正确保存在数据库中,但在访问公司的show view中的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