0

我对 ruby​​ on rails 还是很陌生,我已经尝试了几个小时来解决这个问题,但无法解决。我认为我的范围可能是问题的根源。你能帮我看看如何解决这个问题吗?

我有两个模型,sitecity.rb 和 event.rb。一个事件属于_一个站点城市和一个站点城市有_许多事件。

在我的站点索引页面上,我只想显示至少有一个事件的站点。因此,我在 sitecities.rb 中创建了一个范围:

scope :has_event, ->(n = 1) { includes(:events).select { |w| w.events.size >= n } }

我的站点索引文件包含:

<%= will_paginate @sitecities.has_event %><br />

我的站点控制器索引操作:

def index
  @sitecities = Sitecity.order("name asc").page(params[:page]).per_page(20)

这是我得到的错误:

ActionView::Template::Error (undefined method `total_pages' for #<Array:0x00000100d26008>):
21: 
22: <br />
23: 
24: <%= will_paginate @sitecities.germany.has_event %><br />
25: 
26: 
27: <h2> <%=t :cities_austria %> </h2>
app/views/sitecities/index.html.erb:24:in `_app_views_sitecities_index_html_erb___1333285971746927117_2155045900'
app/controllers/sitecities_controller.rb:11:in `index'
4

1 回答 1

0

尝试添加一个

require 'will_paginate/array'

在导致问题的代码之前,或在您的应用程序控制器中

编辑

您还可以尝试将控制器操作更改为:

def index
  @sitecities = Sitecity.order("name asc").paginate(:page => params[:page],
                                                    :per_page => 20)
end

确保您拥有最新版本的 will_paginate

于 2013-10-05T02:55:45.177 回答