我有以下三个表:
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
并将其与学生匹配。我现在真的很困惑,现在已经三天了。
答案 0 :(得分:0)
我正试图让你的问题围绕着巨型尺寸描述O_O。如果我做得对,你想要这样的东西:
表单有id
属性,请使用它。看一下HTML的结构:
# Each 'student_register' form has an id "edit_student_register_#{id}"
# where id is the object's id
# Inside each of these forms there is a check box with name "student_register[present]"
<form id="edit_student_register_15">
<input name="student_register[present]"/>
</form>
# So you need to get that input with a selector like this:
$("input[name=Card_ID]").keyup (e)->
if e.wich is 13 # If enter key is pressed...
id = this.text # To interpolate in the selector below
$("form#student_register_#{id} input[name='student_register[present]']").attr 'checked', true
在浏览器控制台中进行游戏,检查选择器的显示内容。