Rails项目中使用jQuery操作session

本周分享一个比较实用的jQuery小功能:实用jQuery直接操作session。

Ruby可以直接操作session,但有些实用场景下,不适合用ruby来操作,比如在一个index页面(有分页),每一条记录前面都有一个复选框,我现在想跨页选择记录,然后批量提交,此时如果内在jQuery中直接操作session,那实现这个功能就比较轻松了:

jQuery操作session的方法非常简单,常用的就是三种操作,下面还是用一个实例说明一下:

需求:在一个固定资产的index页面中,库里有N多的固定资产数据,现在需要跨页勾选特定的固定资产,然后导出一份固定资产清单。

先讲一下操作jQuery操作session的方法:

1.新建和赋值: $.session.set('all_asset_item_ids', 'new_value') 创建一个名为'all_asset_item_ids'的session,并赋值为'new_value';

2.清空原来的值:$.session.set('all_asset_item_ids', '') 其实跟上面那个完全一样。。。

3.删除session: $.session.remove('all_asset_item_ids') 这个也不需要多解释了。。。

总结一下:非常简单!

下面再简单说明一下跨页选择的实现方法

:javascript

    $(document).ready(function(){

    //清空所选,并且清除session

        $("#clear_all_checkbox").click(function(){

            $('input:checkbox').each(function () {

                $(this).attr('checked',false);

            });

            $.session.remove('all_asset_item_ids');

            $.session.set('all_asset_item_ids', '');

        });

    //点击分页链接,获取id,保存到session中

    $(".dataTables_paginate").click(function(){

        var cross_page_asset_item_ids = new Array();

        $(":checkbox").each(function(){

            if ($(this).is(":checked")){

                cross_page_asset_item_ids.push($(this).data("asset-item-id"));

            }

        });

        $.session.set('all_asset_item_ids', $.session.get('all_asset_item_ids') + ',' + cross_page_asset_item_ids);

    });

});

大致说明一下:当点击分页按钮时,创建一个新数组,然后对当前页所有的checkbox进行迭代,如果被勾选,则将该条资产记录的id写道数组中去,然后创建一个名为'all_asset_item_ids'的session,将数组的值以及自身之前已经有的值合并;

清空所选按钮不但需要去除勾选,还需要清空session。当选完之后,执行导入action完成后,也需要清空session

你可能感兴趣的:(Rails项目中使用jQuery操作session)