undefined方法`will_paginate',Rails 3.1 / DataMapper

时间:2011-09-14 14:30:25

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

新安装的will_paginate 3.0.0

gem 'will_paginate', '~> 3.0.0', :require=>'will_paginate/data_mapper'

运行控制器查询:

@tickets = Ticket.paginate(:page => params[:page], :per_page => 5,:username => @ticket.username)

哪个有效,如果我放了?页面= X,其中x是网址中的页码,那么为5个用户提取所有门票和分页。

=will_paginate(@tickets) 

在视图中不起作用,这导致

undefined method `will_paginate' for #<#<Class:0x000000053674c8>:0x0000000535cd48>

所以will_paginate可以工作,但不是视图助手。我错过了什么吗?如果这有任何区别,我会使用纤细的模板。我缺少一些语法变化吗?文档很简单,但在此之后无益。我查看了源代码,似乎没有任何变化,但我无法理解为什么它无法访问

然后在切线上,这与一个联想混淆。

=&GT; @ instance.model_belonging_to_instance.create(:文本=&GT; '测试')

TypeError: can't convert nil into Integer
    from /home/qx/.rvm/gems/ruby-1.9.2-p180/gems/will_paginate-3.0.0/lib/will_paginate/page_number.rb:16:in `Integer'
    etc etc et al

解决方案:

的Gemfile:

gem 'will_paginate', '~> 3.0.0'       # removed this, :require=>'will_paginate/data_mapper'

初​​始化器:

require 'will_paginate'
require 'will_paginate/data_mapper'

它会显示,但如果不是在模板的顶部,我会得到一个

堆栈级别太深

错误我无法解释

3 个答案:

答案 0 :(得分:2)

不要在Gemfile中使用:require选项,正如您已经想到的那样;而是在config / application.rb中的某处需要“will_paginate / data_mapper”,例如在Bundler设置之后。

答案 1 :(得分:0)

有一个类似的问题,答案表明这里的自动要求是问题所在。有关问题和答案,请参阅will_paginate undefined method. The Will_paginate gem appears to work though

答案 2 :(得分:0)

gem 'will_paginate', '~> 3.0.0', require: %w[
  will_paginate
  will_paginate/data_mapper
]