`

删除分页中最后一条数据后的处理方法

阅读更多

是这样,今天的需求是:用户可以在线删除条目,删除后,再返回该页。其实这倒是不是太难,毕竟以前在mvc3里面做过,按照以前的做法是:

request_url = request.referer//记得应该是request_url的,但是不清楚为什么不得不到

delete_item_by_id params[:id]

redirect_to request_url

 自我感觉挺合理的流程,但是却出现问题,如果删除的项目是该页的最后一项,而且是最后一个,可能就会出现这页什么内容都没有的情况,这时候就该返回到上一页,怎么整呢?看下面的解法:

解法1:

current_url = request.referer
jump_url = current_url
page_number = (current_url.split '?')[1][5]

if page_number != 1
   if  Items.find_all_by_user_id(current_user_id).last.id == params[:id] &&
 Items.find_all_by_user_id(current_user_id).count % 10 == 1
    jump_url = '/show?page=' + (page_number - 1).to_s
    end
delete_item_by_id params[:id]
redirect_to jump_url

end

解法2:

这只是一个解决方案,类似的解决方案跟他类似,就是根据剩下的item条数,判断总页数,经过判断后去调到相应的页面 。

 

delete_item_by_id params[:id]
if param[:id] ==  Items.find_all_by_user_id(current_user_id).last.id
  last_page_count = all_items %10
  if last_page_count == 0 
     page_number -= 1 
  end
end
redirect_to '/show?page=' + page_number

 解法3这是在分页的时候做的,想法是如果当前页面的条数是0的话,那就跳转到page-1的页面上。这个跳转是由服务器发起的。

 

 

 

@items= Items.where(:user_id => current_user_id).paginate(:page => params[:page], :per_page => 10)
if @items.length ==  0  &&  params[:page] != 1
     redirect_to '/show?page=' + ( params[:page].to_i - 1).to_s
end

redirect_to request.referer 

 

 

解法4:这里做的跳转是右浏览器发起的

 

//假如当前url是 /show?page=10
if($('#item_group').length == 0 )
{
   jump_url = '/show?page=9'
   window.location.href = jump_url 
}

 

 

这四种方法前两种是一类,后两种是一类。

前一类的做法缺点是可能会造成比较大的数据库读写,第2种会小一些,优点是相关操作,比如页数减少在距离delete比较近的地方,别人查看的时候更方便。

后一类做法缺点是:使用重定向,占用网络资源,用户体验略差,有点是减少了数据的操作,尤其第四种方法,跳转放到了客户端,再别人查看代码的时候很不方便。

 

所以推荐的是第二种和第三种方法。

注:以上的代码逻辑可能有些小问题,大家可以根据我的思路修改下。

 

 

分享到:
评论

相关推荐

    .net50个常用方法简单华丽的分页控件功能大的分页控件 50个实用方法

    ///SqlGetSingle()执行一条计算查询结果语句,返回查询结果(object)。 ///SqlExecute()执行SQL语句,返回影响的记录数 ///SqlRunStr()执行SQL语句,不返回影响的记录数 ///SqlRunReturn()执行SQL语句,并...

    net实用类50超级实用方法赠分页分页控件强大的分页

    ///SqlGetSingle()执行一条计算查询结果语句,返回查询结果(object)。 ///SqlExecute()执行SQL语句,返回影响的记录数 ///SqlRunStr()执行SQL语句,不返回影响的记录数 ///SqlRunReturn()执行SQL语句,并...

    中继器简单使用.rp

    原型设计:中继器的简单使用。完成:数据可增删改查,并... 4、删除:删除任意一条数据 5、清空:删除列表所有数据 6、排序:可按年龄大小降序 7、分页:页面数量可根据下拉框选择显示不同,可以翻页浏览数据。)

    net实用类50个常用方法升级版分页

    ///SqlGetSingle()执行一条计算查询结果语句,返回查询结果(object)。 ///SqlExecute()执行SQL语句,返回影响的记录数 ///SqlRunStr()执行SQL语句,不返回影响的记录数 ///SqlRunReturn()执行SQL语句,并...

    asp.net2.0数据教程

    使用DataList来一行显示多条记录 数据控件的嵌套 使用DataList和Repeater过滤数据 使用DropDownList过滤的主/从报表 跨页面的主/从报表 使用Repeater和DataList实现的主/从报表 使用DataList编辑和删除数据 ...

    ASP.NET2.0数据教程

    使用DataList来一行显示多条记录 数据控件的嵌套 使用DataList和Repeater过滤数据 使用DropDownList过滤的主/从报表 跨页面的主/从报表 使用Repeater和DataList实现的主/从报表 使用DataList编辑和删除数据 ...

    微信小程序实现多选删除列表数据功能示例

    主要介绍了微信小程序实现多选删除列表数据功能,涉及微信小程序列表数据读取、显示、删除等相关操作技巧,需要的朋友可以参考下

    vue数据更新但是界面却不刷新

    在使用vue的过程中,很多时候会遇到数据更新但是界面却不刷新,这个附件代码可以帮你解决,看看吧

    Jquery + Json 无刷新分页

    Ajax无刷新分页(jQuery+Json) 做了一个用jQuery来实现的用户控件,VS2008+Access jQuery+ashx+JSON 用ashx来接收请求,数据格式为JSON 实现了批量(选择)操作,编辑接口(反回两个值给用户进行自定义操作) 删除,...

    asp.net2.0

    使用DataList来一行显示多条记录 数据控件的嵌套 使用DataList和Repeater过滤数据 使用DropDownList过滤的主/从报表 跨页面的主/从报表 使用Repeater和DataList实现的主/从报表 使用DataList编辑和删除数据 ...

    net实用类50超级实用方法赠分页

    ///SqlGetSingle()执行一条计算查询结果语句,返回查询结果(object)。 ///SqlExecute()执行SQL语句,返回影响的记录数 ///SqlRunStr()执行SQL语句,不返回影响的记录数 ///SqlRunReturn()执行SQL语句,并...

    在ASP.NET 2.0中操作数据之二十四:分页和排序报表数据

    过去的23个教程中我们研究了如何建立各种报表,包括在界面上添加编辑和删除数据。但是我们没有研究如何对数据进行排序,对于分页我们也仅在研究DetailsView和FormView控件的时候看到。 Step 1:添加分页和排序页面  ...

    基于JavaScript的数据可视化实验室后台管理系统源码+项目说明(期末大作业).zip

    * Controller层:获得前端的param,验证页数和条数是否为空,最后调用业务层将PageUtil(页数类,用于获取前端发送过来的map数据中的页数和条数)对象传递过去。 * Service层:调用DAO层两个方法,返回PageResult类...

    存储图数据的数据库FlockDB.zip

    ) 当一条边被“删除”,这条记录并没有从MySQL中真正删除,而是标记为“删除”状态,这会影响到主键值(一个由源ID-source id,状态-position,位置-position构成的组合键)。类似的,用户账户被删除时,他们所有的边...

    基于FMDB数据库操作类PYFMDB.zip

    //取第一页,每页10条按条件查询数据,指定字段,设置分页,设置排序,返回结果为NSArray 排序中 desc 代表 降序,asc代表升序 单个字段排序 如 id desc 多个字段排序 如 id,wheel ascNSString *where = @"name='...

    商品管理系统 - Java 课程设计

    选中 要修改的条目, 点击的 修改 按钮, 即可弹出 对应管理项 的 修改对话框, 修改数据后点击 确定 按钮, 即可修改一条数据. 查 本系统支持 分页查询 与 关键词搜索. 分页查询 进入管理界面默认显示 第一页, 点击...

    GridView控件实现数据的显示和删除(第8节)

    本节的学习内容是新闻列表的实现,使用分页功能一个页面显示4条新闻。在新闻显示页面,添加一个字段“删除”,运行时,单击该行的“删除按钮时”,弹出“确认删除此信息?”的提示信息,当按确定按钮时删除该行的...

    项目练习---某某公司人事管理系统

    2 登录成功,首页直接展现全部雇员信息,每条数据后有对应的删除+更新操作 3 首页有添加用户按钮 完成添加雇员操作, 之后继续展示首页全部数据 4 点击删除,删除雇员,之后继续展示首页全部数据 5 点击更新,更新页面...

Global site tag (gtag.js) - Google Analytics