21568


Rails 4.2.4でwill_paginate(3.1.0)を使っています。  
そのwill_paginateの表示で「...」が出せません。よくウェブページのチュートリアルなどでみかける例だと、「1 2 3 4 ... 11 12
13」と表示される時の「...」のことです。

[code]

    @posts = @user.posts.paginate(page: params[:page], per_page = 1)
    
[/code]

コントローラ側で上記の記述を行い、対応するヴュー側のファイルにて

[code]

    <%= will_paginate @posts %>
    
[/code]

と記述すると、

> 前へ 1 2 3 4 5 6 7 8 9 10 11 次へ

というリストが表示されました。(config/localesにて日本語設定に合わせているので「前へ」「次へ」という表示になっています)  
どこまでもリストが伸びても困るので、適当なところで「...」という感じで端折りたいのですが、  
何を基準にそうなるのかが分かりません。上の例での使い方でいくとひたすら伸びていくのか、それともページがある数を超えたら「...」が出るのでしょうか？時間がなくてそこまで確認できませんでした。  
またページによっては最初の1と2だけ出してその後ろを「...」にしたいと思うこともあるとおもいます。そのような場合に関して何も考えずに自動的にそのような動作はしないように思われたので、それについての説明が書かれたページも探したのですが、見つかりませんでした。  
どなたかご存じの方がいたらご教示おねがいします。


CC BY-SA 3.0
2016-01-30T22:03:02.983
21517
2016-02-01T12:48:24.783
2016-01-31T00:40:58.423
9403
9403
question
ruby-on-rails
will_paginateで「...」の部分の出し方が分からない


wiki はご確認されましたか？設定オプションが有りますので、お試しになられると宜しいかと思います。

[API documentation · mislav/will_paginate
Wiki](https://github.com/mislav/will_paginate/wiki/API-
documentation#will_paginatecollection-options)

省略の記法(`...`)については

> :inner_window - how many links are shown around the current page (default:
> 4)

とありますので、現在のページ と 前後2ページずつが表示され、それ以外は `...` になるはずです。

しかし、実際はそうなっていないようですね。別途、どこかで指定されていると思われます。  
まずは、オプションとして指定し、正常に動作するかご確認なさってはいかがでしょうか？

例:

[code]

    <%= will_paginate @posts, inner_window: 2 %>
    
[/code]

コチラでは提供されている情報以外は分からないので、これ以上は回答が難しいです。  
関係しそうな箇所を、お調べになることをおすすめします。


CC BY-SA 3.0
2016-02-01T07:57:45.270
21568
2016-02-01T07:57:45.270
7471
21517
answer

[code]

    <%= will_paginate @posts, inner_window: 4 %>
    
[/code]

inner_windowは指定されたページの両側に表示される数で、デフォルトは4。この場合、左右に4ページずつ(2ではなく)

[code]

    オプションなし(inner_window=4)
    page=9
    ← Previous 1 2 … 5 6 7 8 9 10 11 12 13 … 49 50 Next →
    inner_window=1
    page=6
    ← Previous 1 2 … 5 6 7 … 49 50 Next →
    
[/code]

ここまではわかりやすいのですが、「片側に十分なスペースが無い場合、その分反対側が伸びる」という挙動をしているようです。意図したものかどうかはわかりませんが。

[code]

    オプションなし(inner_window=4)
    page=1
    ← Previous 1 2 3 4 5 6 7 8 9 … 49 50 Next →
               (左側が足りないので右側に8個)
    inner_window=1
    page=1
    ← Previous 1 2 3 … 49 50 Next →
    
[/code]


CC BY-SA 3.0
2016-02-01T12:48:24.783
21582
2016-02-01T12:48:24.783
5793
21517
answer