Studentsモデル内の のリストRegisterと、 という結合テーブルを取得しましたStudentRegisters。
ARegisterには多くの生徒がいて、 A は多くのStudentに属することができRegistersます。
register/1もともと、またはなどで学生の在席/欠席をマークできるようにしたかったのですがregister#show、代わりに という新しいページを作成しました。これは、たとえばにregistration行くことでアクセスできます。register/1/registrationregister controller
def registration
@studentregister = StudentRegister.find_all_by_register_id(params[:id])
end
ページがどのように見えるかのスクリーンショットを次に示します。

計画は、学生が自分のカードをスワイプすることです。これはテキストフィールドで読み取られ、値はStudentテーブル、つまりStudent.find_by_card_id', and if the student exists and is present in the current table, check the現在checkbox and display the current time in theの Time of Arrival field, and finally save both changed attributes in theStudentRegister` モデルで検索され、出席が保存されます。ユーザーが存在しない場合は何も起こりません。学生が DB に存在するが現在のテーブルに存在しない場合は、メッセージを表示するか、単に無視します。

私はテーブルを表示して更新することで多くのことを試しました.現在、すべての行はそれ自体がフォームであり、チェックボックスのonClick機能でアクティブ化される非表示の送信ボタンが添付されています.
自分で見てください:
<table border="1">
<%= text_field_tag 'Card_ID',nil, :autofocus => true %>
<tr><td>Present</td>
<td>University ID</td>
<td>First Name</td>
<td>Last Name</td>
<td>Time of Arrival</td>
</tr>
<tr>
<% @studentregister.each do |t| %>
<%= simple_form_for t do |streg| %>
<td><%= streg.check_box :present, :onChange => "submit()", :class => 'student_present'%>
<%= streg.submit :style => 'display: none' %></td>
<td><%= content_tag :span, Student.find(t.student_id).university_id, :id => "#{t.student_id}"%></td>
<td><%= streg.label Student.find(t.student_id).first_name %></td>
<td><%= streg.label Student.find(t.student_id).last_name %></td>
<td><%= content_tag :span, t.time_of_arrival, :id => "toa_#{t.student.id}" %> </td>
</tr>
<% end %>
<% end %>
</table>
また、データを表示して遊んだので、Simple_Form のlabelメソッドを使用する代わりにcontent_tag、各行に ID を与えるために使用しました (以前に回答した質問のおかげです)。それが正しい方法かどうかはわかりませんが、私のソース コードは次のようになります。
<table border="1">
<input autofocus="autofocus" id="Card_ID" name="Card_ID" type="text" />
<tr><td>Present</td>
<td>University ID</td>
<td>First Name</td>
<td>Last Name</td>
<td>Time of Arrival</td>
</tr>
<tr>
<form accept-charset="UTF-8" action="/student_registers/14" class="simple_form edit_student_register" id="edit_student_register_14" method="post" novalidate="novalidate">
<div style="margin:0;padding:0;display:inline">
<input name="utf8" type="hidden" value="✓" /><input name="_method" type="hidden" value="put" />
<input name="authenticity_token" type="hidden" value="c8B0JGs4ZLVILa4a4r4PJJrD/zFcLCDhTLscBKHbFeE=" /></div>
<td><input name="student_register[present]" type="hidden" value="0" />
<input class="student_present" id="student_register_present" name="student_register[present]" onChange="submit()" type="checkbox" value="1" />
<input name="commit" style="display: none" type="submit" value="Update Student register" /></td>
<td><span id="3">w122341434</span></td>
<td><label class="string optional control-label" for="student_register_Michael">Michael</label></td>
<td><label class="string optional control-label" for="student_register_Jones">Jones</label></td>
<td><span id="toa_3"></span> </td>
</tr></form>
<form accept-charset="UTF-8" action="/student_registers/15" class="simple_form edit_student_register" id="edit_student_register_15" method="post" novalidate="novalidate">
<div style="margin:0;padding:0;display:inline">
<input name="utf8" type="hidden" value="✓" /><input name="_method" type="hidden" value="put" />
<input name="authenticity_token" type="hidden" value="c8B0JGs4ZLVILa4a4r4PJJrD/zFcLCDhTLscBKHbFeE=" /></div>
<td><input name="student_register[present]" type="hidden" value="0" />
<input class="student_present" id="student_register_present" name="student_register[present]" onChange="submit()" type="checkbox" value="1" />
<input name="commit" style="display: none" type="submit" value="Update Student register" /></td>
<td><span id="7">w678941512</span></td>
<td><label class="string optional control-label" for="student_register_Stewie">Stewie</label></td>
<td><label class="string optional control-label" for="student_register_Lee">Lee</label></td>
<td><span id="toa_7"></span> </td>
また、それがどのように機能するかをテストするためにいくつかの JQuery を作成しましたが、チェックボックスをオンにするたびにフォームを送信せず、Time of Arrivalフィールドに保存する時間を取得してからフォームを送信します、その時間は保存されません。何故ですか?
<script>
$(function() {
$("input[name=Card_ID]").keydown(function(e) {
var id;
if (e.which === 13) {
id = this.value;
alert("That"); //Just to see that it works
$('#toa_'+id).text('2001-01-01 14:13:46 UTC');
//Sets the time for the row which as the toa_id that was entered in the checkbox
(Remember this is just a test to see how it works, in reality the Student ID should be checked, not the form ID)
$('form#edit_student_register_14 input[type="checkbox"]').attr('checked', true);
alert("This");
$('form#edit_student_register_14').submit();
}
})});
。