Ruby 中分页功能的实现
来源:互联网 发布:新浪微博域名是什么 编辑:程序博客网 时间:2024/05/29 13:21
需求分析:实现两种分页方式:
1.将从数据库中得到的数据进行筛选,筛选后的数据保存在数组之中,然后将数组中的元素在前台展示出来。举例:学生在选择课程的时候只能选择自己没有选修过的课程,已经选修的不能查看,因此需要将所有的课程从数据库中读出来以后减去已经选修的。
2.将需要的数据从数据库中全部查出来,然后将所有的数据显示出来。举例:学生查看自己所有已经选择的课程,从数据库中查出来以后就可以直接在前台显示了。
第一种情况实现:
第一种情况下rails没有可以直接调用的方法,因此需要自己写。
首先在控制器中将所有的数据进行分页,存在不同的数组中,注意数组的边界。
#------------分页--------------------- total = @course.count params[:total] = total if params[:page] == nil params[:page] = 1 #进行初始化 end if total % $PageSize == 0 params[:pageNum] = total / $PageSize else params[:pageNum] = total / $PageSize + 1 end #计算分页的开始和结束位置 params[:pageStart] = (params[:page].to_i - 1) * $PageSize if params[:pageStart].to_i + $PageSize <= params[:total].to_i params[:pageEnd] = params[:pageStart].to_i + $PageSize - 1 else params[:pageEnd] = params[:total].to_i - 1 #最后一页 end #---------------------------------------------------------------------
修改view中的文件:
<tbody> <% (params[:pageStart]..params[:pageEnd]).each do |i| %> <tr> <td><%= i+1 %></td> <td><%= @course[i].course_code %></td> <td><%= @course[i].name %></td> <td><%= @course[i].credit %></td> <td><%= @course[i].limit_num %></td> <td><%= @course[i].student_num %></td> <td><%= @course[i].course_type %></td> <td><%= @course[i].teaching_type %></td> <td><%= @course[i].exam_type %></td> <td><%= @course[i].teacher.name %></td> <td><%= link_to "加入课程", select_course_path(@course[i]), class: 'btn-sm btn-info' %></td> </tr> <% end %> </tbody>
<%#----------分页---------%> <div id="nav"> <input type="hidden" name="page" value=<%= params[:page]%>> <nav style="text-align: center"> <ul class="pagination"> <% if params[:page].to_i == 1%> <li class="disabled"><a>首页</a></li> <li class="disabled"><a>上一页</a></li> <% else %> <li><a href=<%= list_courses_path + '?page=1'%> >首页</a></li> <li><a href=<%= list_courses_path + '?page='+(params[:page].to_i - 1).to_s %>>上一页</a></li> <% end %> <li class="disabled"><a>当前为第<%= params[:page] %>页 共<%= params[:pageNum] %>页</a></li> <% if params[:page].to_i == params[:pageNum]%> <li class="disabled"><a>下一页</a></li> <li class="disabled"><a>末页</a></li> <% else %> <li><a href=<%= list_courses_path + '?page=' + (params[:page].to_i + 1).to_s %> >下一页</a></li> <li><a href=<%= list_courses_path + '?page=' + params[:pageNum].to_s %>>末页</a></li> <% end %> </ul> </nav> </div>
第二种情况可以直接调用框架里面的方法。
首先在Gemfile中添加:gem will_paginate,然后在终端内输入 bundle install.
gem 'will_paginate'
修改控制器文件:
@course=current_user.courses.paginate(:page=>params[:page],:per_page=>5)
修改视图文件:
<%= will_paginate @course %>
这样就可以实现每页显示五个,效果如下:
PS:rails框架真是强大啊
0 0
- Ruby 中分页功能的实现
- asp中分页的功能实现
- JSP中分页功能的实现
- Jsp中分页功能的实现
- PHP中分页功能的实现
- Swift中实现ruby中字符串乘法倍增的功能
- 在Ruby On Rails中实现Mail发送的功能
- ruby实现按键精灵的功能
- 分页功能的实现
- 分页功能的实现
- 分页功能的实现
- 分页功能的实现
- java中实现分页功能
- C#中DataGrid分页,修改,更新,删除功能的实现
- 简述实现C#中GridView的分页功能.
- MySQL中数据结果集分页功能的实现方法
- Android_Listview中使用线程实现分页延迟加载的功能
- DevExpress中如何实现GridControl的分页功能
- ubuntu服务器mysql远程访问
- Android中Bitmap转成Mat
- SpringMVC框架刘宝宝深度版——Springmvc搭建步骤
- Light Pre-Pass 渲染器----为多光源设计一个渲染器
- 利用boost做string到wstring转换,以及字符集转换
- Ruby 中分页功能的实现
- stringstream的用法
- Android开发-自定义View-AndroidStudio(二十二)FontMetrics计算文字居中
- 数据导出到excel表格
- 创建与删除SQL约束或字段约束
- iOS正则去除所有符号
- Android自定义View(CustomCalendar-定制日历控件)
- Material Design+RxJava+Retrofit+MVP App
- 使用Kaptcha生成验证码