NoMethodError(#broadcast:0x00000003fd9320>的未定义方法`page'):</broadcast:0x00000003fd9320>

时间:2014-02-13 18:28:19

标签: ruby-on-rails ruby ruby-on-rails-3 require will-paginate

我对rails有点新,我的任务之一是将rails 2.1应用程序迁移到3.2。 逐步开始,首先是2.1到2.3轨道,现在是3.2。

不能使用bundle或gem文件,但我需要安装所有宝石。

我的问题是现在正在转换paginate方法。

我按照这个顺序在/config/initializer/load.rb中有我的要求

需要'rails' 要求'rails / all' 需要'prototype-rails' 要求'will_paginate'

libs加载成功。

但是当我尝试在我的源代码中使用paginate时,我收到了这个错误。

NoMethodError (undefined method `page' for #<Broadcast:0x00000003fd9320>):
  app/controllers/broadcasts_controller.rb

我的控制器有这段代码:

@broadcasts = Broadcast.page(params[:page] || 1).select(select_clause).order( order_clause)

广播模型类似于

class Broadcast < ActiveRecord::Base
  extend PhoneNumberFormatValidation
  ...
end

我尝试在我的控制器之前放置“require will_paginate”,但它没有用。 如果我运行rails console

[user1@virtual-rh6x64 web]$ rails c
irb(main):001:0> require 'will_paginate'
=> false

我不明白为什么找不到分页方法。 他是否使用ActiveRecord :: Base?

我的宝石是:

*** LOCAL GEMS ***

actionmailer (3.2.11)
actionpack (3.2.11)
activemodel (3.2.11)
activerecord (3.2.11)
activerecord-oracle_enhanced-adapter (1.4.1)
activeresource (3.2.11)
activesupport (3.2.11)
arel (3.0.2)
bigdecimal (1.1.0)
builder (3.0.4)
bundler (1.2.3)
coderay (1.0.5)
coffee-rails (3.2.2)
coffee-script (2.2.0)
coffee-script-source (1.4.0)
dbi (0.4.5)
deprecated (2.0.1)
erubis (2.7.0)
execjs (1.3.2)
fastercsv (1.5.0)
hike (1.2.1)
i18n (0.6.1)
io-console (0.3)
journey (1.0.4)
jquery-rails (2.1.4)
json (1.7.7)
libv8 (3.11.8.13 x86_64-linux)
libxml-ruby (2.1.0)
mail (2.4.4)
method_source (0.8.2)
mime-types (1.19)
minitest (3.2.0)
multi_json (1.7.2)
pg (0.14.1)
polyglot (0.3.3)
prototype-rails (3.2.1)
pry (0.9.12)
puma (1.6.3)
rack (1.4.1)
rack-cache (1.2)
rack-ssl (1.3.2)
rack-test (0.6.2)
rails (3.2.11)
railties (3.2.11)
rake (0.9.2.2)
rdoc (3.12)
ref (1.0.2)
ruby-oci8 (2.1.2)
ruby-plsql (0.5.0)
sass (3.2.5)
sass-rails (3.2.5)
slop (3.4.6)
sprockets (2.2.1)
therubyracer (0.11.4)
thor (0.16.0)
tilt (1.3.3)
treetop (1.4.12)
tzinfo (0.3.35)
uglifier (1.3.0)
will_paginate (3.0.2)

1 个答案:

答案 0 :(得分:1)

尝试使用

 require 'will_paginate/active_record'

要加载特定的子项,您可能需要通过Bundler跟踪正常设置中将要加载的子项_paginate ..因为这样就不需要加载这些子项