我无法在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 %>
我尝试使用与新闻源相同的技术,但它不起作用。我将如何对结果进行分页,类似于用户新闻源。
答案 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
希望有所帮助。