先日突然この問題に遭遇しました。Railsアプリはwill_paginateを使用しており、コントローラーで次のように定義しています。
# contacts_controller.rb
def index
# ...
@search = @current_user.contacts.search(params[:search])
@contacts = @search.all.paginate({:page => params[:page], :per_page => 20})
end
開発とステージング(これは本番ではなくステージングボックスです)の両方が同じデータベースを指します。上記のコードはローカルマシンでは正常に機能しますが、ステージング時に次のエラーが発生します。
undefined method 'to_i' for {:per_page=>20, :page=>nil}:Hash
コードは両方のコンピューターで同一です。なぜそれが一方でうまく機能し、もう一方ではうまく機能しないのか、何か考えはありますか?
編集:ステージングサーバーでは、ローカルボックスでgemを使用しているときにプラグインを使用していましたが、プラグインを削除してgemをインストールすると、次のようなエラーが発生します。
uninitialized constant Array::WillPaginate
明らかに、それはまだ解決されていません。ステージングサーバーでデプロイを実行した後、正常に動作する前に機能していたにもかかわらず、再びそのエラーが発生します。誰かがこれについて何かアイデアがありますか?私は完全に無知です。