【问题标题】:will_paginate undefined method. The Will_paginate gem appears to work thoughwill_paginate 未定义的方法。 Will_paginate gem 似乎可以工作
【发布时间】:2011-11-08 18:14:22
【问题描述】:

我正在使用 rails 2.3.8

我的错误:

undefined method `will_paginate' for #<ActionView::Base:0x1124bfa10>

在 environment.rb 中:

require "bundler/setup"
Bundler.require(:default)

在我的 Gemfile 中:

gem "will_paginate", "2.3.14"

在视图中:

<%= will_paginate(@subscriptions) %>

在控制器中:

@search = Subscription.search(params[:search])
@search.order ||= :ascend_by_account_id

@subscriptions = @search.all.paginate(:include => :account, :page => params[:page], :per_page => 30)

现在...分页方法似乎可以在应用程序的其余部分工作...只是这个应该包含分页链接的 will_paginate 方法不起作用。 =\

现在,我刚开始使用 bundler,在使用 bundler 之前,一切都正常工作。 在我的 environment.rb 我做

require "bundler/setup"
Bundler.require(:default)

就在Rails::Initializer 通话之前

这是我的 gem 文件的 :default 部分:

source "http://rubygems.org"
# system
gem "rails", "2.3.8"
gem "activesupport", "2.3.8", :require => "active_support"
gem "rake", "0.8.7"

# might be for POW, not sure
gem "childprocess", "0.2.2", :git => "git://github.com/jarib/childprocess.git"


# app
gem "mysql", "2.7"
gem "lockfile"
gem "ssl_requirement", "0.1.0"
gem "attr_encrypted", "1.1.2"
#gem "searchlogic", "2.5.6"
gem "will_paginate", "2.3.16"
gem "paperclip"


gem "garb", "0.7.6"
gem "delayed_job", "2.0.3"
gem "httparty", "0.5.2"


gem "pony", "1.1"
gem "friendly_id", "3.0.6"
gem "stringex", "1.1.0"
gem "i18n", "0.4.2"

gem "sms_fu", "1.1.1"

注意:由于某种原因,搜索逻辑仅在以经典 rails 2.3 方式包含在 Rails:Initializer.run 调用中时才有效。config.gem "searchlogic", :version => "2.2.28"

【问题讨论】:

  • 如果你去掉 :include => :account 会发生什么?分页语句是否运行?只是我在快速谷歌上看到的所有内容都表明,如果该模型发生了一些奇怪的事情,它偶尔会变得有点奇怪。
  • 是的,这并没有改变任何东西。奇怪的是,在我切换到捆绑包之前,这一切都奏效了。
  • 嗯,所以预捆绑器可以工作并且仍然可以在您应用的某些部分工作?
  • 正确,我将在我的问题中添加关于我如何包含内容的问题。

标签: ruby-on-rails pagination


【解决方案1】:

禁用 will_paginate 的自动要求:

# Gemfile
gem "will_paginate", "~> 2.3.15", :require => nil

并在 environment.rb 的末尾手动要求它:

# end of environment.rb
require "will_paginate"

问题是,如果您在调用 Rails::Initializer 之前需要 will_paginate,它可能无法正确地进行引导。

【讨论】:

  • 我应该使用 Bundler.require 来做到这一点吗?就像......在初始化程序之后拥有我所有的宝石?
  • 顺便说一句。谢谢!但现在我只需要找到搜索逻辑的解决方案。我也发布了一个关于那个的问题。情况有点不同。
猜你喜欢
  • 1970-01-01
  • 2010-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多