未定义的方法`paginate&#39;对于#<artist:0xd7a8db8>

时间:2016-03-26 18:50:50

标签: ruby-on-rails will-paginate friendly-id

我正在使用rails 4和will_paginate以及friendly_id

source 'https://rubygems.org'

gem 'rails',                '4.2.6'
gem 'friendly_id', '~> 5.1.0'
gem 'sorcery'
gem "paperclip", "~> 4.3"
gem 'will_paginate',           '3.0.7' 
gem 'bootstrap-will_paginate', '0.0.10'

在艺术家控制器中

  def show
    @artist = Artist.friendly.find(params[:id]).paginate(page: params[:page])
  end

和视图artists.show.html.erb

<div class="text-center">
<%= will_paginate %>
</div>
<div class="list-group">
  <% @artist.songs.each do |song| %>
      <%= link_to song.title, artist_song_path(@artist, song), class: 'list-group-item' %>
  <% end %>
</div>

它给我这个错误

NoMethodError in ArtistsController#show
undefined method `paginate' for #<Artist:0xd7a8db8>
Extracted source (around line #3):

class ArtistsController < ApplicationController
  def show
    @artist = Artist.friendly.find(params[:id]).paginate(page: params[:page])
  end
end
请帮忙!

更新;

我修好了

艺术家控制器中的

  def show
    @artist = Artist.friendly.find(params[:id])
    @songs = @artist.songs.paginate(page: params[:page])
  end

谢谢@Ben Y

1 个答案:

答案 0 :(得分:1)

paginate方法仅适用于记录集合,而不是单个记录集合。使用find时,将返回单个记录。如果您希望能够进行分页,则需要使用where而不是find,但仅在索引路由中可能会返回多个艺术家。