我仍然对铁轨上的红宝石很新,我已经尝试了几个小时来解决这个问题,但事实并非如此。我认为我的范围可能是问题的根源。你能帮我找到解决方法吗?
我有两个模型,sitecity.rb和event.rb。事件属于sitecity和sitecity has_many事件。
在我的sitecities索引页面上,我只想显示至少有一个事件的sitecities。因此我在sitecities.rb中创建了一个范围:
scope :has_event, ->(n = 1) { includes(:events).select { |w| w.events.size >= n } }
我的sitecities索引文件包含:
<%= will_paginate @sitecities.has_event %><br />
我的sitecities控制器索引操作:
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'
答案 0 :(得分:0)
尝试添加
require 'will_paginate/array'
导致问题的代码之前,或者在应用程序控制器中
修改
您还可以尝试将控制器操作更改为:
def index
@sitecities = Sitecity.order("name asc").paginate(:page => params[:page],
:per_page => 20)
end
确保您拥有最新版本的will_paginate