如何在页面上轻松显示有限数量的项目并添加指向更多页面的链接

时间:2013-10-08 01:51:01

标签: ruby-on-rails ruby pagination sinatra

我正在使用sinatra和小胡子来构建应用程序。我想在页面上显示最多30个项目。我在想will_paginate gem,但似乎很复杂。有没有更简单的方法呢?这是我对links.rb的看法:

module S
  class App
    module Views
      class AdminLinks < Layout

        def links_all
          Links.all.map do |s|
            {
              :name => s.name,
              :comments_num => s.comments.count,
              :user_name => s.user ? s.user.name : "" ,
              :created_at => s.created_at.to_formatted_s(:db) ,
              :user_id => s.user ? s.user.id : "" ,
              :streme_id => s.id,
            }
          end
        end

      end
    end
  end
end

我想知道如何使用:Links.limit(5).offset(5)

1 个答案:

答案 0 :(得分:1)

对于裸骨分页,您可以使用

# in controller
@page = params[:page] ? 1 : params[:page].to_i


# in model
def links_all(page)
      per_page = 30
      Links.limit(per_page).offset( (page - 1) * per_page ).all.map do |s|
        {
          :name => s.name,
          :comments_num => s.comments.count,
          :user_name => s.user ? s.user.name : "" ,
          :created_at => s.created_at.to_formatted_s(:db) ,
          :user_id => s.user ? s.user.id : "" ,
          :streme_id => s.id,
        }
      end
end

# in view (replace links_path with your path helper
<%= link_to "Previous Page", links_path(:page => @page - 1 ) if @page > 1 %>
<%= link_to "Next Page", links_path(:page => @page + 1 ) %>