我有以下三个表:
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
学生中的一个匹配时,我希望选中相应的复选框,理论上,一旦选中,它的表单就会自动提交,“嘿,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 时它应该检查一个/所有复选框(不确定此代码将检查什么,因为不是很清楚并且复选框是相同的),但是它不起作用。
我什至不知道如何使用 Ruby 代码来搜索University ID
并与学生匹配。我现在真的很困惑,现在已经三天了。