【发布时间】:2024-05-17 02:20:01
【问题描述】:
我有一个包含多个对象的分页表,并且希望将它们的 ID 传递给会话变量,具体取决于在导出最终 ID 列表之前用户浏览多个页面时是否已选择存储行的复选框标记。当我单独选择每一行时,它目前正在工作,但是当我点击“全选”复选框时,只有每页上的最后一个 ID 最终被保存到会话变量中
为此,我通过更改事件传递每个 ID:
Javascript:
<script type="text/javascript">
$(function(){
$('#selectall').click(function(i, v){
$('.css-checkbox').prop('checked', this.checked).trigger("change");
});
var checkCount = $('.css-checkbox').length;
$('.css-checkbox').click(function(i, v){
$('#selectall').prop('checked',$('.css-checkbox:checked').length == checkCount)
});
$('.css-checkbox').change(function(){
$.post('user_exports/update_user_export_session', { object_id: $(this).val(), checked: this.checked});
});
});
</script>
更新控制器中的操作:
def update_user_export_session
render :nothing => true
session[:object_ids] ||= []
if params[:checked] == "true"
session[:object_ids] << params[:object_id]
else
session[:object_ids].delete(params[:object_id])
end
end
当我单击 SelectAll 复选框时,rails 服务器显示 10 个参数被传递给控制器中的 update_session 方法,但 session[:object_ids] 最终只有一个 ID。
【问题讨论】:
标签: jquery ruby-on-rails checkbox session-variables onchange