/ / Paginação de Rails com Kaminari com has_many: através de Relacionamento - ruby-on-rails, ruby-on-rails-3, paginação, kaminari

Paginação de Rails com Kaminari com has_many: através de Relacionamento - ruby-on-rails, ruby-on-rails-3, paginação, kaminari

Eu tenho três modelos relevantes. Um usuário que has_many :photos e belongs_to :dorm, um dormitório que has_many :users e has_many :photos, :through => :users, e uma classe de foto que belongs_to :users e belongs_to :dorm.

Eu quero paginar todas as fotos que estão em um dormitório com kaminari. Eu tenho isso no meu Gemfile e executei o comando bundle.

No meu dormitors_controller:

@dorm=Dorm.find(params[:id])
@photos=@dorm.photos.page(params[:page]).per(3)

e no meu modo de exibição Dorm show (na verdade, em um partial, _index.html.erm renderizado na exibição show):

<%= paginate @photos %>

Isso me dá o erro: undefined method "page" for #<Class:0x107483d68>.

Eu sei porque isso não funciona (não deve ser chamado em uma aula), mas eu não sei como fazer isso funcionar ...

Respostas:

1 para resposta № 1

hrm, estranho. Isso deve funcionar. Na verdade, criei um aplicativo baunilha com uma ação que você mostrou acima e com os modelos a seguir, mas não consegui reproduzir o erro.

class Dorm < ActiveRecord::Base
has_many :users
has_many :photos, :through => :users
end

class User < ActiveRecord::Base
belongs_to :dorm
has_many :photos
end

class Photo < ActiveRecord::Base
belongs_to :user
end

Deve haver outra causa raiz no código do seu aplicativo. Então, você poderia rastrear o problema um pouco mais? Para começar, o seguinte código funciona no seu console rails?

@dorm.photos.page(1)

-1 para resposta № 2
  1. é gem "kaminari" no seu Gemfile?
  2. execute o bundler depois de alterar seu Gemfile