2

Ruby 1.9.3 で Rails アプリを 2.3.5 から 3.2.5 にアップグレード中です。古いアプリでは、gem に変換した will_paginate プラグインを使用していました。

アップグレード後、次のエラーが表示されます: 引数の数が間違っています (1 に対して 2)

アプリケーション トレースからの数行: アプリケーション トレース | フレームワーク トレース | 完全なトレース

will_paginate (3.0.3) lib/will_paginate/active_record.rb:124:in `paginate'
app/models/activity.rb:28:in `dashboard_activities'
app/controllers/dashboard_controller.rb:10:in `index'
actionpack (3.2.5) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
actionpack (3.2.5) l

問題は、ページネーションを使用しているアクティビティ モデルの古いコードにあると思います。誰でも助けることができますか?

コード:

def dashboard_activities(page, total_records, date_range1 = nil, date_range2 = nil ) 
  unless date_range2.nil? 
    x =[ "is_delete = false AND status = 'open'  AND date(due_date) between ? and ?", date_range1, date_range2]
  else
    x =[ "is_delete = false AND status = 'open' AND date(due_date) = ? ", date_range1]  
  end       
  paginate(:all,
    :page =>page,
    :per_page =>total_records,
    :conditions => x,
    :order =>"due_date asc")
end
4

1 に答える 1

2

エラーメッセージはそれをすべて言います:

paginate メソッドは 1 つの引数のみを想定しており、それがオプション ハッシュです。:all 引数を省略すると、all は正常に機能します。

gem バージョン >= 3.0 では、次のように短い page-method を呼び出すことができます。

paginate(page: page, per_page: total_records, conditions: x, order: "due_date asc")

詳細については、will_paginate wikiを参照してください。

于 2012-06-24T05:00:09.347 に答える