`

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

阅读更多

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

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

 

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

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

 

 

分享到:
评论

相关推荐

    【JavaScript源代码】vue列表数据删除后主动刷新页面及刷新方法详解.docx

    总的来说,通过`provide / inject`组合,我们可以创建一个全局的刷新方法,有效地在Vue应用中处理数据更新后的页面刷新问题,确保用户界面始终与后端数据保持同步。这种方法不仅避免了不必要的浏览器刷新,也保持了...

    java 分页、批量删除

    Java 分页和批量删除是Web开发中的两个重要概念,尤其在大数据量的后台管理系统中,它们对于提升用户体验和优化数据库操作至关重要。以下是对这两个主题的详细讲解。 **分页** 分页是网页显示大量数据时常用的一种...

    java一次性查询处理几百万数据解决方法

    - 每次查询结果返回后,遍历`ResultSet`对象,对每一条数据进行处理。 - 为防止内存溢出,可以设置每次处理的数据量上限,并将处理结果定期写入文件或其他持久化存储中。 4. **资源管理**: - 在操作完成后及时...

    web中分页和批量处理技术

    批量处理通常涉及多条数据的处理,为了避免逐条执行SQL带来的效率问题,可以采用以下技术: 1. **批量插入**:当需要插入大量数据时,可以使用批量插入语句,一次插入多条记录,减少网络往返次数和事务开销。 - ...

    数据更新与分页数据更新与分页数据更新与分页

    在处理大量数据时,分页技术允许用户逐步查看和操作数据,而不是一次性加载所有记录,这大大提高了页面加载速度,减少了内存占用,并优化了用户交互。 首先,我们来讨论数据更新。在数据库管理中,数据更新涉及到对...

    datalist 编辑、分页、删除等常见用法

    分页是处理大量数据的常用方法,以防止页面加载过慢或用户界面过于拥挤。实现分页,首先要确定每页显示的数据量(如每页10条记录),然后使用前端或后端的分页算法来计算当前页的数据范围。前端通常通过发送包含页码...

    MySql+SSH的分页及批量删除示例

    总的来说,"MySql+SSH的分页及批量删除示例"旨在帮助开发者掌握在实际项目中如何高效地处理数据分页和批量删除。通过学习这个示例,你可以了解到如何在MySQL中编写高效的分页和删除SQL,以及如何在SSH框架下实现这些...

    C#winform百万数据瞬间加载-分页控件源码

    在C# WinForm开发中,处理大量数据是一个常见的挑战,特别是在用户界面中显示这些数据时。"C# winform百万数据瞬间加载-分页控件源码" 提供了一个高效解决方案,通过使用分页控件来优化用户体验,使得大规模数据能够...

    GridView中手动分页显示数据和数据导出功能代码

    首先,你需要计算每一页显示的数据量(例如,每页10条),然后根据当前页码获取对应范围的数据。这通常涉及以下步骤: - 数据获取:从数据库或其他数据源中获取所有数据。 - 分页计算:根据当前页码和每页记录数...

    通用的JSP分页+增删改查+批量删除

    【标题】"通用的JSP分页+增删改查+批量删除" 是一个Web开发中的常见需求,尤其是在处理大量数据时,为了提高用户体验和系统性能,通常会使用分页来展示数据。在这个主题中,我们将深入探讨如何在JavaServer Pages ...

    GridView分页和选择某条记录

    在网页上显示大量数据时,分页是一种有效的优化用户体验的方法,因为它避免了一次性加载所有数据导致的页面加载慢的问题。在GridView中启用分页非常简单,只需要在控件的属性中设置`AllowPaging`为`true`。此外,...

    mvc+(Ajax)分页条

    - **无刷新删除**:在Ajax请求中添加删除操作,服务器处理完删除请求后返回状态,前端根据状态更新表格和分页条。 **5. 安全性与优化** - **防止跨站请求伪造(CSRF)**:添加令牌验证,确保删除操作的安全性。 - *...

    sqlserver --游标 实现数据分页

    在SQL Server中实现数据分页是一项常见的需求,尤其是在处理大量数据时,为了提高查询效率和用户体验,分页显示数据成为了数据库设计中的一个关键点。在给定的代码示例中,作者通过创建一个存储过程`proc_cursor`来...

    在DataGrid里执行分页增加删除修改分页.rar_DataGrid 分页_datagrid

    通常,我们会在DataGrid下方添加一个“添加”按钮,点击后弹出一个新的表单或者在当前页的最后添加一行空数据。在新行中,用户可以输入信息,然后提交到数据库。对于ASP.NET,可以使用TemplateField创建一个Button...

    ssh对数据库增删改查,全选删除,分页

    由于“全选删除”涉及到多条记录的操作,因此需要在一个数据库事务中完成,以保证数据的一致性。Spring提供了优秀的事务管理支持,可以基于注解或XML配置来声明事务边界。 此外,安全性也是需要注意的点。在处理...

    jsp简单的分页,利用stringbuffer动态地加数据

    这里我们使用了`StringBuffer`来动态添加数据,这是一种在Java中高效处理字符串的方法,尤其在需要频繁拼接字符串的情况下。 首先,我们需要理解`StringBuffer`的基本用法。`StringBuffer`是一个线程安全的类,它...

    Sql分页存储过程、适合数据量大的分页

    在IT领域,尤其是在数据库管理与优化方面,分页存储过程是一种高效的处理大量数据查询的技术。本文将基于给定文件中的信息,深入探讨SQL分页存储过程的实现原理、优势及其实现方法,同时也会涉及一些高级数据库编程...

    react 表格嵌套(主表和子表都可以新增、编辑、保存、删除、主表展开和分页国际化)

    4. **删除功能**:为每一行提供删除按钮,点击后弹出确认对话框,确认后调用删除接口,从数据源中移除该行,并更新表格视图。 5. **主表展开**:主表展开功能允许用户查看或操作与主表项相关的子数据。这通常通过...

    ssh整合的分页、批量删除

    3. **后端处理**:在Action类中,我们可以遍历这个集合,使用Hibernate的Session.delete()方法逐个删除对应的实体。需要注意事务管理,确保在批量操作过程中遇到异常能回滚所有变更。 4. **批量删除优化**:为了...

    JS+Jquery分页插件

    最后,当数据加载完成后,调用插件的方法来初始化和渲染分页条。 例如: ```javascript $(document).ready(function() { var totalItems = 1000; // 总数据量 var itemsPerPage = 10; // 每页显示数据量 $('#...

Global site tag (gtag.js) - Google Analytics