2011-07-01 115 views
1

我有三種相關模型。 has_many :photosbelongs_to :dorm的用戶,has_many :usershas_many :photos, :through => :users的宿舍以及belongs_to :usersbelongs_to :dorm的照片類別。Rails通過has_many與Kaminari分頁:通過關係

我想分頁與kaminari在宿舍的所有照片。我把它放在我的Gemfile中,然後運行bundle命令。

在我dorms_controller:

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

,在我的宿舍放映視圖(在放映視圖渲染的部分,實際上_index.html.erm):

<%= paginate @photos %> 

這給了我錯誤:undefined method 'page' for #<Class:0x107483d68>

我知道爲什麼這不工作(不應該叫上一類),但我不知道如何使它工作...

回答

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 
    

    應用程序代碼中應該有另一個根本原因。那麼,你能否追查更多問題?首先,下面的代碼在你的rails控制檯中工作嗎?

    @dorm.photos.page(1) 
    
  • +0

    如果我做Dorm.find(1).photos.page(1)它確實有效。所以它必須是params [:id],但我不知道爲什麼不起作用。 – Rymo4

    +0

    從頭開始,它不是params [:id]。如果我只是找到(1),我會得到同樣的錯誤。 – Rymo4

    +0

    現在我重新啓動我的服務器,它的工作原理...我不知道爲什麼,因爲我已經重新啓動它。奇怪,但仍然關閉。謝謝。即使它有點固定,病態也會給你一個接受。 – Rymo4

    -1
    1. 是寶石「雷」你Gemfile?改變你的Gemfile
    +0

    我已經做過這兩個。 – Rymo4

    +0

    然後你重新啓動服務器嗎? – bassneck