是这样,今天的需求是:用户可以在线删除条目,删除后,再返回该页。其实这倒是不是太难,毕竟以前在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比较近的地方,别人查看的时候更方便。
后一类做法缺点是:使用重定向,占用网络资源,用户体验略差,有点是减少了数据的操作,尤其第四种方法,跳转放到了客户端,再别人查看代码的时候很不方便。
所以推荐的是第二种和第三种方法。
注:以上的代码逻辑可能有些小问题,大家可以根据我的思路修改下。
相关推荐
///SqlGetSingle()执行一条计算查询结果语句,返回查询结果(object)。 ///SqlExecute()执行SQL语句,返回影响的记录数 ///SqlRunStr()执行SQL语句,不返回影响的记录数 ///SqlRunReturn()执行SQL语句,并...
///SqlGetSingle()执行一条计算查询结果语句,返回查询结果(object)。 ///SqlExecute()执行SQL语句,返回影响的记录数 ///SqlRunStr()执行SQL语句,不返回影响的记录数 ///SqlRunReturn()执行SQL语句,并...
原型设计:中继器的简单使用。完成:数据可增删改查,并... 4、删除:删除任意一条数据 5、清空:删除列表所有数据 6、排序:可按年龄大小降序 7、分页:页面数量可根据下拉框选择显示不同,可以翻页浏览数据。)
///SqlGetSingle()执行一条计算查询结果语句,返回查询结果(object)。 ///SqlExecute()执行SQL语句,返回影响的记录数 ///SqlRunStr()执行SQL语句,不返回影响的记录数 ///SqlRunReturn()执行SQL语句,并...
使用DataList来一行显示多条记录 数据控件的嵌套 使用DataList和Repeater过滤数据 使用DropDownList过滤的主/从报表 跨页面的主/从报表 使用Repeater和DataList实现的主/从报表 使用DataList编辑和删除数据 ...
使用DataList来一行显示多条记录 数据控件的嵌套 使用DataList和Repeater过滤数据 使用DropDownList过滤的主/从报表 跨页面的主/从报表 使用Repeater和DataList实现的主/从报表 使用DataList编辑和删除数据 ...
主要介绍了微信小程序实现多选删除列表数据功能,涉及微信小程序列表数据读取、显示、删除等相关操作技巧,需要的朋友可以参考下
在使用vue的过程中,很多时候会遇到数据更新但是界面却不刷新,这个附件代码可以帮你解决,看看吧
Ajax无刷新分页(jQuery+Json) 做了一个用jQuery来实现的用户控件,VS2008+Access jQuery+ashx+JSON 用ashx来接收请求,数据格式为JSON 实现了批量(选择)操作,编辑接口(反回两个值给用户进行自定义操作) 删除,...
使用DataList来一行显示多条记录 数据控件的嵌套 使用DataList和Repeater过滤数据 使用DropDownList过滤的主/从报表 跨页面的主/从报表 使用Repeater和DataList实现的主/从报表 使用DataList编辑和删除数据 ...
///SqlGetSingle()执行一条计算查询结果语句,返回查询结果(object)。 ///SqlExecute()执行SQL语句,返回影响的记录数 ///SqlRunStr()执行SQL语句,不返回影响的记录数 ///SqlRunReturn()执行SQL语句,并...
过去的23个教程中我们研究了如何建立各种报表,包括在界面上添加编辑和删除数据。但是我们没有研究如何对数据进行排序,对于分页我们也仅在研究DetailsView和FormView控件的时候看到。 Step 1:添加分页和排序页面 ...
* Controller层:获得前端的param,验证页数和条数是否为空,最后调用业务层将PageUtil(页数类,用于获取前端发送过来的map数据中的页数和条数)对象传递过去。 * Service层:调用DAO层两个方法,返回PageResult类...
) 当一条边被“删除”,这条记录并没有从MySQL中真正删除,而是标记为“删除”状态,这会影响到主键值(一个由源ID-source id,状态-position,位置-position构成的组合键)。类似的,用户账户被删除时,他们所有的边...
//取第一页,每页10条按条件查询数据,指定字段,设置分页,设置排序,返回结果为NSArray 排序中 desc 代表 降序,asc代表升序 单个字段排序 如 id desc 多个字段排序 如 id,wheel ascNSString *where = @"name='...
选中 要修改的条目, 点击的 修改 按钮, 即可弹出 对应管理项 的 修改对话框, 修改数据后点击 确定 按钮, 即可修改一条数据. 查 本系统支持 分页查询 与 关键词搜索. 分页查询 进入管理界面默认显示 第一页, 点击...
本节的学习内容是新闻列表的实现,使用分页功能一个页面显示4条新闻。在新闻显示页面,添加一个字段“删除”,运行时,单击该行的“删除按钮时”,弹出“确认删除此信息?”的提示信息,当按确定按钮时删除该行的...
2 登录成功,首页直接展现全部雇员信息,每条数据后有对应的删除+更新操作 3 首页有添加用户按钮 完成添加雇员操作, 之后继续展示首页全部数据 4 点击删除,删除雇员,之后继续展示首页全部数据 5 点击更新,更新页面...