0

Attendance従業員をAttendanceテーブルに保存するにはどうすればよいですか。協会 :

  1. 従業員 has_many :出席。
  2. 出席の所属先:従業員。

コードは次のとおりです。

<%= 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 列があり、特定の出席は 1 人の従業員にのみリンクできます。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 に答える