Я создал три модели:
В форме просмотра посещаемости # действие я сохраняю recruitment_id
, date
и status
и показываю отмеченный статус при изменении.
Но ошибка возникает, когда я отмечаю посещаемость на одном recruitment_id, тот же статус отображается для всех recruitment_id, но в бэкэнде сохраняется только отмеченная посещаемость со всеми атрибутами.
Я хочу показать только отмеченный статус всей посещаемости recruitment_id
с их соответствующий статус.
форма. html .erb
<table>
<thead>
<tr>
<th class="attendance-emp-name">Emp. Name</th>
<% (1..(Time.days_in_month @project_site.attendance_month.strftime("%m").to_i)).each do |date| %>
<th class="text-center"><%= date %></th>
<% end %>
</tr>
</thead>
<tbody>
<% @recruitment.where(location: @project_site.site_id).each do |recruitment| %>
<tr>
<td class="attendance-emp-name"><%= recruitment.name %></td>
<% (1..(Time.days_in_month @project_site.attendance_month.strftime("%m").to_i)).each do |date| %>
<td>
<%= form_with(model: attendance, :html => {:id => 'attendance-form-validation'}, url:[@project_site, @attendance], local: true) do |f| %>
<% if attendance.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(attendance.errors.count, "error") %> prohibited this attendance from being saved:</h2>
<ul>
<% attendance.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div>
<% if Attendance.where(attendance_date: (@project_site.attendance_month.strftime("%Y-%m")+"-"+date.to_s)).first == nil %>
<div class="wrapper-class">
<%= f.select :status, [['P', 1], ['A', 2], ['H', 3], ['L', 4], ['WE', 5], ['CO', 6]], {}, { onchange: 'this.form.submit()', class: 'attendance-select-input' } %>
</div>
<% else%>
<% attendance_value = Attendance.where(attendance_date: (@project_site.attendance_month.strftime("%Y-%m")+"-"+date.to_s)).first.status %>
<%if attendance_value == 1 %>
<%="P" %>
<% elsif attendance_value == 2 %>
<%="A"%>
<%elsif attendance_value == 3 %>
<%="H"%>
<%elsif attendance_value == 4 %>
<%= "L" %>
<%elsif attendance_value == 5 %>
<%= "WE" %>
<%elsif attendance_value == 6 %>
<%= "CO" %>
<% end %>
<% end %>
<%= f.hidden_field :attendance_date, value: (@project_site.attendance_month.strftime("%Y-%m")+"-"+date.to_s)%>
<%=f.hidden_field :recruitment_id, value: recruitment.id%>
<%=f.hidden_field :project_site_id, value: @project_site.id%>
</div>
<div>
<%# f.submit 'Submit', :class => 'button primary small float-right' %>
</div>
<% end %>
</td>
<% end %>
</tr>
<% end %>
</tbody>
</table>
как только я отмечаю посещаемость одного сотрудника, он сохраняет правильность в базе данных с помощью recruitment_id, но на виду показывает тот же статус во всех столбцах .
введите описание изображения здесь