Ruby on Rails分页

时间:2013-06-16 18:07:15

标签: ruby-on-rails ruby pagination

我无法在ruby中获取一组数据进行分页。我已经有了一个例子(用户发布的帖子是'关注')

_feed_item.html.erb

<li id="<%= feed_item.id %>">
<%= link_to gravatar_for(feed_item.user), feed_item.user %>
<span class="user">
<%= link_to feed_item.user.name, feed_item.user %>
</span>
<span class="content"><%= feed_item.content %></span>  
<span class="timestamp">
Posted <%= time_ago_in_words(feed_item.created_at) %> ago.
</span>
# not part of the code - just a placeholder for a like button I'm writing
<span class="likebtn-wrapper" data-lang="en"></span>
##########################
<% if current_user?(feed_item.user) %>
<%= link_to "delete", feed_item, method: :delete,
data: { confirm: "You sure?" },
title: feed_item.content %>
<% end %>
</li>

_feed.html.erb

<% if @feed_items.any? %>
<ol class="microposts">
<%= render partial: 'shared/feed_item', collection: @feed_items %>
</ol>
<%= will_paginate @feed_items %>
<% else %>

home.html.erb(呈现新闻源)

<%= render 'shared/feed' %>

因为默认主页仅呈现您关注的用户的帖子 - 我创建了一个“全局”帖子索引,它只列出了保存到数据库的所有帖子。

global.html.erb

Global Feed |  
<%= User.count %> Total Users |
<%= Micropost.count %> Total Posts<br />
<% Micropost.all.each do |micropost| %>
Global Post Number: <%= micropost.id %> <br />
<%= link_to micropost.user.name, micropost.user %> <br />
<%= micropost.content %><br />
<span class="timestamp">
Posted <%= time_ago_in_words(micropost.created_at) %> ago.
</span>
<% end %>

我尝试使用与新闻源相同的技术,但它不起作用。我将如何对结果进行分页,类似于用户新闻源。

1 个答案:

答案 0 :(得分:0)

你不应该使用

<% Micropost.all.each do |micropost| %>
你的global.html.erb文件中的

而是在此文件中使用<%= render @feeds %>。这将使用_feed.html.erb处理每个Feed

在你的microposts_controller.rb中,你应该像:

  def index
    @feeds = Micropost.paginate(page: params[:page])
  end

希望有所帮助。