0

如何将员工的表保存AttendanceAttendance表中。协会 :

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

1 回答 1

0

如果是出勤belongs_to员工,那么出勤表将有一个employee_id 列,并且给定的出勤将只能链接到一名员工。因此,我认为您可能希望更改模型,以便has_and_belongs_to_many在员工和出勤之间建立关系。然后你需要一张attendances_employees桌子来加入他们。

一旦您在模型之间建立了这种联系,请查看带有 `:has_many :through` 记录关联的处理复选框表单。问题下方有一条评论指向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在您的出勤模型中加入。

于 2013-11-18T13:56:01.007 回答