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 № 1hrm, 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
- é gem "kaminari" no seu Gemfile?
- execute o bundler depois de alterar seu Gemfile