Страниране с will-paginate с помощта на RSpotify gem

Играя си с RSpotify Gem https://github.com/guilhermesad/rspotify Сега опитах за да добавите пагинация с помощта на will-paginate gem. Както можете да видите на моя сайт тук https://rubyjukebox.herokuapp.com/, след като потърсите изпълнител и има повече от 8, пагинацията работи добре.

В моя artists_controller.rb имам следния код:

def index
if !params[:artist_name].empty?
@artists = RSpotify::Artist.search(params[:artist_name]).paginate(:page =>params[:page], :per_page => 8)
else
redirect_to root_path
end
end

И в index.html.erb имам:

<%= will_paginate @artist, renderer: BootstrapPagination::Rails %>

Това изглежда работи добре. Но когато изберете изпълнител и бъдете пренасочени към списъка с албуми, страницата се показва, но показва всеки наличен албум на всеки сайт, вместо да показва само 5 албума на всеки сайт.

Отново в моя artists_controller.rb имам:

def show
@artist = RSpotify::Artist.find(params[:id])
@album = @artist.albums(country: 'DE').paginate(:page => params[:page], :per_page => 5)
end

И в моя show.html.erb имам:

<%= will_paginate @album, renderer: BootstrapPagination::Rails %>

Някакви идеи къде ми е грешката?


person nucci    schedule 26.02.2015    source източник
comment
Моля, покажете кода, който генерира списъка с албуми. Изглежда, че не итерирате правилно @album.   -  person Sebastian vom Meer    schedule 26.02.2015
comment
Благодаря, това беше достатъчно като намек. Имах <% @artist.albums(country: 'DE').each do |album| %> преди, но точно това дефинирах в @albums. Така че работният код изглежда така: <% @album.each do |album| %>   -  person nucci    schedule 26.02.2015


Отговори (1)


Paginate е метод на клас и няма да работи с променлива на екземпляр.
Опитайте Artist.album.paginate

person Rod Chfat    schedule 15.03.2016
comment
Здравейте, добре дошли в SO. Това трябва да е коментар, а не отговор. Можете да коментирате, след като спечелите достатъчно репутация, така че трябва да работите върху това. наздраве - person Cthulhu; 15.03.2016