1

SinatraとRuby1.9.3を使用しています。

アイテムのリストがあり、それらをページ付けしたいと思います。私はWeb開発に慣れていないので、それを詳細に行う方法がわかりません。

page2onへのリンクなど、各ページのリンクを実装する方法がわかりませんpage1。私はそうするべきですか:

<a href='?page=2'

?searchterm=やのような他のパラメータを上書き?sort=?し、既存の?page=パラメータを考慮に入れないため、これは良い考えではないと思います。

私の考えは、私などと同じフォームを使用し、searchtermボタンとJavaScriptを使用して値を変更することでした。しかし、それは非常に複雑なようで、stackoverflow.comを含むすべての大きなウェブサイトはページネーションにリンクを使用しています。

次の機能を備えたページネーションを実現するにはどうすればよいですか。

  1. 別のページに移動するときに他のパラメータを含めます。
  2. 既存の?page=パラメータを上書きします。
  3. Javascriptはありません(オプションですが、良いでしょう)。
4

3 に答える 3

4

必要なパラメータはいつでもインスタンス変数にロードできます。

@page = params[:page] || 1

そして、あなたがやっていたようにそれを使用してください:

<a href="?page=#{@page + 1}&search_term=#{params[:searchterm]}"...
于 2012-12-03T18:35:30.377 に答える
1

@ChuckEの答えに少し追加して、これを行うことができます。

# Controller
  def index
    # ...
    @models = MyModel.find(:yourquery)
    if params[:page]
      page = params[:page].to_i
      @models = @models[(page * 10)..(page + 10)] # Selecting an slice out of the @models array
    end
  end

# In your view
  - @model.each do |item|
    =# do stuff
  = link_to "Next Page", "?page=#{@page + 1}"
  = link_to "Next Page", "?page=#{@page - 1}" unless @page = 1
于 2012-12-03T19:07:17.780 に答える
1

will_paginateこのようなことのいくつかを自動的に行う人気のあるgemもあります: https ://github.com/mislav/will_paginate 。シナトラと連携します。

## Sinatra app:
require 'will_paginate'
require 'will_paginate/active_record'  # or data_mapper/sequel
于 2015-01-21T03:28:18.500 に答える