2

私はアルファベット順のページネーションを取得しようとしています-したがって、私のガイドラインはアルファベット順にリスト (およびグループ化) され、上部のページネーションはアルファベット順のリストになります。これまでのところ、私は持っています:

ガイドライン_コントローラー.rb

def index
    if params[:search].present?
    @search = Sunspot.search(Guideline) do  
      fulltext params[:search]
    end
    @guidelines = @search.results
  else

    @guidelines = Guideline.order(:title).page(params[:page]).per(5).to_a.group_by{|u|u.title[0].upcase}

  end

index.html ビュー

<%= paginate @guidelines %>
<% @guidelines.keys.sort.each do |starting_letter| %>
            <h3>
            <%= link_to starting_letter, {:action => :browse, :controller =>:index, :letter => starting_letter } %>
</h3>

                <% @guidelines[starting_letter].each do |guideline| %>

そして残りのビュー

これは私にエラーを与えています

ActionView::Template::Error (undefined method `current_page' for #<Hash:0x007fd974700148>):
    1: <%= paginate @guidelines %>
    2: 
    3: <div class="page-header">
    4:  <% if @search %>
  app/views/guidelines/index.html.erb:1:in `_app_views_guidelines_index_html_erb___4442223584034894893_70285969096020'
  app/controllers/guidelines_controller.rb:25:in `index'

私は解決策に近づいていますか?ありがとう

4

1 に答える 1

1

kaminaris 配列ラッパー クラスを使用できます: https://github.com/amatsuda/kaminari#paginating-a-generic-array-object

したがって、この行は次のようになります。

@guidelines = Kaminari.paginate_array(Guideline.order(:title).to_a.group_by{|u|u.title[0].upcase}).page(params[:page]).per(5)

注:これは完全にテストされておらず、私の頭の上から外れています。

于 2013-07-20T22:26:59.957 に答える