我有一个选中特定班级学生的复选框。但未选中的学生ID不通过复选框。请帮助我。我也在下面编写了代码。
在视图中
<%= label_tag :students %>
<button type="button" id="check_all">
Check / Uncheck All
</button>
<table id = "mark">
<tr>
<td>
<table >
<thead>
<tr>
<td><strong>Students List</strong></td>
</tr>
</thead>
<tbody>
<% @student.each do |i| %>
<tr>
<td><%= check_box_tag :student, i.id %><%= i.first_name.capitalize %></td>
</tr>
<% end %>
</tbody>
</table>
<table>
<tr>
<td>
</tr>
</td>
</table>
</td>
</tr>
</table>
Js文件
$('#check_all').on("click", function(){ $('input[type="checkbox"]').click(); });
答案 0 :(得分:0)
至少可以通过两种方式实现这一目标。
一)从学生收集ID中扣除提交的学生:
unselected_ids = @student.collect(&:id) - params[:student].collect(&:to_i)
二)使用javascript从客户端站点设置另一个隐藏字段
答案 1 :(得分:0)
您可以在复选框和零值之前使用相同name
的隐藏输入。
<input type='hidden' value='0' name='student'>
<input type='checkbox' value='1' name='student'>
当提交表单并选中复选框时,0
值会覆盖1
之前的值0
。如果未选中复选框,则student[]
值将发送给控制器
只有当你有一个值,但是你有很多id时才能使它工作。并且您必须在复选框中使用student
名称,如果您使用params[:student]
名称,则只有<% @student.each do |s| %>
<tr><td>
<%= hidden_field_tag "student_all[]", s.id %>
<%= check_box_tag "student[]", s.id %><%= s.first_name.capitalize %>
</td></tr>
<% end %>
在这种情况下,use可以在您的代码中使用此构造:
student_unchecked = params[:student_all] - params[:student]
在控制器中取得未经检查的学生:
{{1}}