2013-08-07 140 views
0

如何將員工的Attendance保存在Attendance表中。 協會:與關聯模型的複選框值

  1. 員工的has_many:出勤。
  2. 出勤belongs_to:員工。

下面是代碼:

<%= form_for @attendance do |f| %> 
<%= f.date_select :date %><br /> 
<button type="button" id="check_all"> 
    EmployeeName/Attendance 
</button><br /> 
<table> 
<%#= hidden_field_tag "attendance[is_present]", '0'%> 
<% Employee.all.each do |emp|%> 
<tr> 
    <td> 
    <%= emp.first_name %><%= emp.last_name %></td> 
    <td style="padding-left:50px;"> 
    <%#= check_box_tag 'attendance[is_present]', 1, (@data.attendance.is_present == 1 ? true : false)%> 
    <%= f.check_box :is_present %></td> 
    <td> 
     <%= attendance.inspect %> 
    <% @attendance.employee_id = emp.id %> 
    </td> 
</tr> 
<% end %> 
</table> 
<script type='text/javascript'> 
    $('#check_all').on("click", function(){ $('input[type="checkbox"]').click(); }); 
</script> 
<%= f.submit %> 

<% end %> 

回答

0

如果考勤belongs_to員工,那麼出勤表將有一個EMPLOYEE_ID列和給定的考勤將只能鏈接到一個員工。所以我認爲你可能想改變你的模型,這樣你在Employee和Attendance之間有一個has_and_belongs_to_many關係。那麼你需要一個attendances_employees表來加入它們。

在模型之間建立連接後,請檢查Handle check box forms with an `:has_many :through` Record Association。在這個問題下有一個評論,指向http://millarian.com/programming/ruby-on-rails/quick-tip-has_many-through-checkboxes/,它有一個非常有用的例子。以防萬一,該網站曾經消失了,這裏是你想設置你的觀點是什麼:

<% Employee.all.each do |emp|%> 
    <tr> 
    <td> 
     <%= label_tag "employee_id_#{emp.id}", "#{emp.first_name} #{emp.last_name}" %> 
    </td> 
    <td style="padding-left:50px;"> 
     <%= check_box_tag :employee_ids, emp.id, @attendance.employees.include?(emp), name: "attendance[employee_ids][]", id: "employee_id_#{emp.id}" %> 
    </td> 
    </tr> 
<% end %> 

您還需要有attr_accessible :employee_ids在你的考勤模式。