/ / Rails Поширення з Kaminari з has_many: through Relationship - ruby-on-rail, ruby-on-rail-3, pagination, kaminari

Райли Поділкування з Камінарі з "has_many: through Relationship" - рубіни на рельсах, рубіни на рейках-3, перетин, камінари

У мене є три відповідні моделі. Користувач, який has_many :photos і belongs_to :dorm, гуртожиток якого has_many :users і has_many :photos, :through => :users, і клас фото, який belongs_to :users і belongs_to :dorm.

Я хочу розмістити всі фотографії, що знаходяться в гуртожитку з камінарі. Я маю це в моєму Gemfile і запустив команду з пучками.

У моєму dorms_controller:

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

і в моєму загальному виді шоу (фактично в частковому, _index.html.erm, відображеному у вікні перегляду):

<%= paginate @photos %>

Це дає мені помилку: undefined method "page" for #<Class:0x107483d68>.

Я знаю, чому це не працює (не слід запускати в класі), але я не знаю, як це зробити ...

Відповіді:

1 для відповіді № 1

hrm, дивно. Це має працювати. Я насправді зробив додаток ванілі за допомогою дії, показаної вище, та наступних моделей, але я не зміг відтворити помилку.

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

В коді додатка має бути інша корінна причина. Отже, ви могли трохи більше відшукати цю проблему? По-перше, чи працює наступний код на консолі вашої рейки?

@dorm.photos.page(1)

-1 для відповіді № 2
  1. це дорогоцінний камінь "камінарі" у вашому Gemfile?
  2. запустити bundler після зміни вашого Gemfile