/ / Rails Paginierung mit Kaminari mit has_many: durch Beziehung - Ruby-on-Rails, Ruby-on-Rails-3, Paginierung, Kaminari

Rails Paginierung mit Kaminari mit has_many: durch Beziehung - Ruby-on-Rails, Ruby-on-Rails-3, Paginierung, Kaminari

Ich habe drei relevante Modelle. Ein Benutzer, der has_many :photos und belongs_to :dorm, ein Schlafsaal, der has_many :users und has_many :photos, :through => :usersund eine Fotoklasse, die belongs_to :users und belongs_to :dorm.

Ich möchte alle Fotos paginieren, die in einem Wohnheim mit Kaminari sind. Ich habe es in meinem Gemfile und habe den Befehl bundle ausgeführt.

In meinem Schlafsaalcontroller:

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

und in meiner Dorm Show-Ansicht (tatsächlich in einer partiellen, _index.html.erm gerendert in der Show-Ansicht):

<%= paginate @photos %>

Das gibt mir den Fehler: undefined method "page" for #<Class:0x107483d68>.

Ich weiß, warum das nicht funktioniert (sollte nicht in einer Klasse genannt werden), aber ich weiß nicht, wie ich es zum Laufen bringen kann ...

Antworten:

1 für die Antwort № 1

hm, komisch. Das sollte funktionieren. Ich habe tatsächlich eine Vanille-App mit einer oben gezeigten Aktion und den folgenden Modellen erstellt, aber ich konnte den Fehler nicht reproduzieren.

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

Es sollte eine andere Ursache in Ihrem App-Code geben. Könntest du das Problem ein bisschen mehr aufspüren? Funktioniert der folgende Code zunächst in Ihrer Rails-Konsole?

@dorm.photos.page(1)

-1 für die Antwort № 2
  1. ist das Juwel "Kaminari" in deinem Gemfile?
  2. führe Bundler nach dem Ändern deiner Gemfile aus