次の3つのテーブルがあります。
Student
、Register
およびと呼ばれる結合テーブルStudent_Register
。
理解しやすくするために、それぞれのモデルを次に示します。
class Register < ActiveRecord::Base
has_many :student_registers
has_many :students, :through => :student_registers
belongs_to :event
attr_accessible :date, :student_ids, :module_class_id, :event_id
end
class Student < ActiveRecord::Base
has_many :student_registers
has_many :registers, :through => :student_registers
attr_accessible :first_name, :last_name, :university_id
end
class StudentRegister < ActiveRecord::Base
belongs_to :register
belongs_to :student
attr_accessible :present, :register_id, :student_id, :time_of_arrival
default_scope :order => 'present DESC'
end
だから今私がやりたいのは、Register
コントローラーを使用して特定のレジスターを開き、ページ上でそのレジスターをマークすることregister/1/registration
です。それはうまくいきます。ただし、現時点で私が持っているのは次のとおりです。
各チェックボックスには送信ボタンが付いていますが、を使用して非表示にし:style => 'display: none'
ました。次のコードは、何が起こっているのかをよりよく理解できる可能性があります。
register/registration.html.erb
<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><div class="present"><%= streg.check_box :present, :onChange => "submit()"%> </div>
<%= streg.submit :style => 'display: none' %></td>
<td><%= streg.label Student.find(t.student_id).university_id %></td>
<td><%= streg.label Student.find(t.student_id).first_name %></td>
<td><%= streg.label Student.find(t.student_id).last_name %></td>
<% if t.time_of_arrival %>
<td><%= streg.label t.time_of_arrival.strftime('%H:%M:%S%P')%></td>
<% else %>
<td><%= streg.label " "%></td>
<% end %>
</tr>
<% end %>
<% end %>
</table>
そのページのソースは次のようになります。
私がやりたいことは次のとおりです。
テキストボックスに入力されたテキストがUniversity ID
学生のテキストの1つと一致する場合、対応するチェックボックスをオンにします。理論的には、チェックボックスをオンにすると、そのフォームが自動的に送信され、「hey presto」、更新されます。
これは私の現在のJS/Coffeescriptコードです。
registers.js.coffee
$("input[name=Card_ID]").keyup ->
if @value.length > 3
$("input[name=\"student_register[present]\"]").prop "checked", true
else
$("input[name=\"student_register[present]\"]").prop "checked", false
主にJS/Coffeescriptの知識が0であるだけでなく、テキストボックスの長さが3より大きい場合にチェックする必要があるかどうかを確認したかったため、このコードは希望どおりに機能しないことを知っています。 1つまたはすべてのチェックボックス(これはあまり明確ではなく、チェックボックスのは同じであるため、このコードが何をチェックするかはわかりません)が、機能しません。
University ID
Rubyコードを使用してを検索し、学生と照合する方法すらわかりません。私は今、文字通り混乱しています。これで3日間です。