2014-03-19 116 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