У мене є три відповідні моделі. Користувач, який 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 для відповіді № 1hrm, дивно. Це має працювати. Я насправді зробив додаток ванілі за допомогою дії, показаної вище, та наступних моделей, але я не зміг відтворити помилку.
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
- це дорогоцінний камінь "камінарі" у вашому Gemfile?
- запустити bundler після зміни вашого Gemfile