我是铁杆新手,所以请轻松一点。我已经构建了我的第一个博客,并希望将其设置为<%post.each do | post | %GT;渲染帖子,我希望它能够显示10个帖子然后有一个链接来查看下一个帖子。
我希望这是一个简单的问题。如果您希望我发布任何代码,请告诉我。
答案 0 :(得分:7)
您应该使用gem will_paginate 。
安装和使用非常简单:http://wiki.github.com/mislav/will_paginate/installation
答案 1 :(得分:6)
will_paginate绝对是要走的路,我只是想我会添加一个指向railscasts will_paginate video的链接,向您展示如何使用它,因为有时这可能比学习基础更容易。阅读文档。另外,您将学习关于如何在Rails包含的部分中进行分页的简短历史(它更慢且更麻烦)。旧的经典分页也被移植到它自己的插件中,但只有当你将Rails升级到他们把它拿出来的版本时才推荐使用它。
Railscasts有很多其他很棒的视频,你可能会觉得有用。例如,一旦你获得更高级,你可能想尝试ajax pagination
答案 2 :(得分:4)
查看will_paginate宝石。
在ActiveRecord模型上进行分页非常容易:
@posts = Post.paginate :page => params[:page], :order => 'created_at DESC'
在视图中,页面链接可以使用单个视图助手进行渲染:
<%= will_paginate @posts %>
答案 3 :(得分:4)
我在使用“will_paginate”时遇到了问题,安装GEM然后解决了......真正的问题!所以我决定在RoR上编写分页,这并不难,所以我想分享我的所作所为:
<强>控制器:强>
def index
#how many register per page i want to show
@b = 30
#params via GET from URL
a = params[:page].to_i
#first register per page
a1 = params[:page].to_i * @b
#the query can be easy...
@callcenters = Income.all(:joins => "LEFT JOIN radcheck ON radcheck.id = incomes.radcheck_id", :order => "created_at DESC",:limit => "#{a1},#{@b}", :select => "radcheck.username as clave,caller_id, created_at, value")
#I need to know how many pages somehow
@registrostotales = Income.all(:joins => "LEFT JOIN radcheck ON radcheck.id = incomes.radcheck_id", :select => "radcheck.username as clave,caller_id, created_at, value").count
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @callcenters }
end
end
查看:强>
...
Total de registros: <%= numero = @registrostotales %><br/><br/>
<!-- total pages -->
<% pages = @registrostotales / @b %>
<!-- the last page -->
<% if pages % @b > 0 %><% pages = pages + 1 %><% end %>
Paginas:
<% (0..(pages-1)).each do |i| %>
<!-- href or link_to, http://xxxxxxxx/yyyy?page=i -->
<%= link_to i+1, :action => "index", :controller => "callcenters", :page => i %>
<% end %>
<!-- the view.. -->
<table>
<tr>
<th>#</th>
<th>Teléfono (ID)</th>
<th>Zona</th>
</tr>
<% @callcenters.each do |callcenter| %>
<tr>
<td><%= numero - params[:page].to_i * 30 %><% numero = numero - 1 %></td>
<td><%= callcenter.caller_id %></td>
<td><%= Node.first(:conditions => {:calling_id => callcenter.caller_id}).description %></td>
</tr>
<% end %>
</table>
我希望这对某人有帮助!
最诚挚的问候, ivancarrascoq
答案 4 :(得分:4)
要将分页添加到Ruby on Rails应用中,您必须修改以下文件:
gem 'will_paginate', '~> 3.1.0'
gem 'will_paginate-bootstrap'
@areas = Area.pagination_request(params[:page])
<%= will_paginate @areas, renderer: BootstrapPagination::Rails %>
def self.pagination_request(page)
paginate :per_page => 10, :page => page
end
答案 5 :(得分:1)
我们可以使用'will_paginate-bootstrap'gem轻松完成此任务。
首先要继续为gem文件添加一行
gem 'will_paginate-bootstrap'
。
现在运行bundle install。
在控制器中,您将使用@post = Post.all
来获取
模特的内容。
而是使用此
@post = Post.paginate(:page=>params[:page],per_page:5)
在上面的行中,per_page字段用于指定所需的记录数 在页面中。
<%= will_paginate @post,renderer: BootstrapPagination::Rails %>
注意:我认为Post为模态,并在控制器中声明为变量。 只需使用您的变量。
答案 6 :(得分:0)
您可以使用kaminari宝石。
非常易于使用并且高度定制友好。