0

私はまだRuby on Railsに慣れていないので、何時間もこれを理解しようとしましたが、できませんでした。私のスコープが問題の原因である可能性があると思います。これを修正する方法を見つけるのを手伝ってもらえますか?

sitecity.rb と event.rb の 2 つのモデルがあります。イベントは sitecity に属しており、sitecity には多くのイベントがあります。

サイトシティのインデックス ページで、少なくとも 1 つのイベントがあるサイトシティのみを表示したいと考えています。したがって、sitecities.rb にスコープを作成しました。

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

私の sitecities インデックス ファイルには次のものが含まれます。

<%= 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 に答える