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

19 篇文章 0 订阅
12 篇文章 0 订阅

是这样,今天的需求是:用户可以在线删除条目,删除后,再返回该页。其实这倒是不是太难,毕竟以前在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比较近的地方,别人查看的时候更方便。

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

 

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

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

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值