0

我正在使用 sinatra 和 mustache 来构建应用程序。我想在页面上显示最多 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)

4

1 回答 1

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 ) %>
于 2013-10-08T01:54:06.697 回答