Kaminari undefined method 'page'

I am trying to add Kaminari to my Rails application. I turned on the gem and here is what my controller looks like:

def index
    if params[:year]
      if params[:year].size > 0
        @songs = Song.where("year like ?", params[:year]).page(params[:page])
      elsif params[:artist].size > 0
        @songs = Song.where("artist_name like ?", params[:artist]).page(params[:page])
      elsif params[:song].size > 0
        @songs = Song.where("title like ?", params[:song]).page(params[:page])
      end
    else
      @songs = Song.first(10).page(params[:page])
    end
  end

and then adding

<%= paginate @songs %>

In my opinion, the error I get is:

undefined method `page' for #<Array:0x007fab0455b4a8>

Not sure why this happens when I executed the docs step for the step.

+4
source share
2 answers

Kaminari uses an paginate_arrayarray to paginate. 2 solutions:

You can use limit(10)instead first(10):

@songs = Song.limit(10).page(params[:page])

Secondly use paginate_array

@songs = Kaminari.paginate_array(Song.first(10)).page(params[:page])

+18
source

. . present? params, nil empty.

def index
  @songs = Song

  @songs = @songs.where("year like ?", params[:year])          if params[:year]
  @songs = @songs.where("artist_name like ?", params[:artist]) if params[:artist]
  @songs = @songs.where("title like ?", params[:song])         if params[:song]

  @songs = @songs.limit(10).page(params[:page])
end
+2

Source: https://habr.com/ru/post/1524568/


All Articles