【问题标题】:Rails Pagination with Kaminari with has_many :through Relationship使用 has_many 使用 Kaminari 进行 Rails 分页:通过关系
【发布时间】:2011-09-26 11:02:53
【问题描述】:

我有三个相关的模型。 has_many :photosbelongs_to :dorm的User,has_many :usershas_many :photos, :through => :users的Dorm,belongs_to :usersbelongs_to :dorm的Photo类。

我想用 kaminari 对宿舍里的所有照片进行分页。我在我的 Gemfile 中有它并运行了 bundle 命令。

在我的 dorms_controller 中:

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

在我的 Dorm 显示视图中(实际上是在显示视图中呈现的部分 _index.html.erm):

<%= paginate @photos %>

这给了我错误:undefined method 'page' for #&lt;Class:0x107483d68&gt;

我知道为什么这不起作用(不应在课堂上调用),但我不知道如何使它起作用......

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 pagination kaminari


    【解决方案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
    

    您的应用代码中应该还有另一个根本原因。那么,您能否进一步追查问题?首先,以下代码在您的 Rails 控制台中有效吗?

    @dorm.photos.page(1)
    

    【讨论】:

    • 如果我做 Dorm.find(1).photos.page(1) 它确实有效。所以它一定是 params[:id] 的东西,但我不知道为什么那行不通。
    • 从头开始,它不是参数 [:id]。如果我只是 find(1),我会得到同样的错误。
    • 现在我重新启动了我的服务器并且它工作了......我不知道为什么,因为我已经重新启动了它。奇怪,但仍然关闭。谢谢。即使它自己修复了,我也会给你一个接受。
    【解决方案2】:
    1. 您的 Gemfile 中有 gem 'kaminari' 吗?
    2. 更改 Gemfile 后运行捆绑程序

    【讨论】:

    • 那之后你有没有重启你的服务器?
    猜你喜欢
    • 1970-01-01
    • 2012-02-04
    • 1970-01-01
    • 2013-08-16
    • 1970-01-01
    • 2012-11-24
    • 2011-07-06
    • 2013-05-06
    • 2012-02-18
    相关资源
    最近更新 更多