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 => :users
und 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 № 1hm, 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
- ist das Juwel "Kaminari" in deinem Gemfile?
- führe Bundler nach dem Ändern deiner Gemfile aus