मेरे पास तीन प्रासंगिक मॉडल हैं। एक उपयोगकर्ता जो has_many :photos
तथा belongs_to :dorm
, एक डॉर्म जो has_many :users
तथा has_many :photos, :through => :users
, और एक फोटो क्लास जो belongs_to :users
तथा belongs_to :dorm
.
मैं उन सभी तस्वीरों को पृष्ठांकित करना चाहता हूं जो कि कामिनी के साथ एक छात्रावास में हैं। मैं इसे अपने जेमफाइल में रखता हूं और बंडल कमांड चलाता हूं।
मेरे 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घंटा, अजीब। वह काम करना चाहिए। मैंने वास्तव में एक वैनिला ऐप बनाया था, जिसमें आपने ऊपर और निम्न मॉडल दिखाए थे, लेकिन मैं त्रुटि को पुन: उत्पन्न नहीं कर सका।
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)
उत्तर № 2 के लिए -1
- आपके रत्न में रत्न "कामिनी" है?
- अपने Gemfile को बदलने के बाद बंडल चलाएँ