OC

Knowledge OS
登录 注册
全部话题 移民 创业 iOS Mac Objective-C Swift Android 招聘 求职

安装了Kaminari,为什么不能使用呢?

tinyfool
tinyfool 发布于 2014年06月16日
无人欣赏。

按照https://github.com/amatsuda/kaminari的步骤安装了Kaminari,

gem 'kaminari'
bundle

而且用bundle show kaminari可以查看到安装地址

/Users/tinyfool/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/kaminari-0.16.1

在代码里面

def index
 #@demos = Demo.all
 @demos = Demo.page(params[:page])
end

但是页面报错为:

undefined method `page' for #<Class:0x007fe3b0874240>
Extracted source (around line #5):
 def index
 #@demos = Demo.all
 @demos = Demo.page(params[:page])
 end
Rails.root: /Users/tinyfool/work/democodes

这种情况该如何处理呢?

共16条回复
楼长 ·
hlcfan 回复于 2014年06月16日

你把 console 错误打出来看看或者把错误页面截个图

2楼 ·
tinyfool 回复于 2014年06月16日

1楼 @hlcfan 页面错误信息我已经写在 上面了啊

3楼 ·
tinyfool 回复于 2014年06月16日

刚才有人提示我重新启动服务器,我测试了一下发现,有gem 'kaminari'在,服务器就启动不起来,报错为:

rails s
bin/rails:6: warning: already initialized constant APP_PATH
/Users/tinyfool/work/democodes/bin/rails:6: warning: previous definition of APP_PATH was here

去掉,就可以启动,汗

4楼 ·
tinyfool 回复于 2014年06月16日

@lgn21st 求援

5楼 ·
common_zhang 回复于 2014年06月16日

这的确莫名其妙呀,要不用 bundle exec rails s 试试?

6楼 ·
lgn21st 回复于 2014年06月16日

你的系统上可能安装了不同版本的 Rails 或者 某个 gem 的多个版本,导致 rails s 的时候警告,试试看用

bundle exec rails s

或者

./bin/rails s

来启动,你安装 kaminari 的方式没有问题,可以试试看grep搜一下你的应用中什么地方定义了这个 APP_PATH 或者这个被override了。另外一个简单的办法就是在 rails 的 console 里面测试,Rails 的 console 就是一个完整的 rails 命令行环境

~/foobar $ ./bin/rails c
Loading development environment (Rails 4.1.1)
>> Demo.page(3)
Demo Load (1.2ms) SELECT "demos".* FROM "demos" LIMIT 25 OFFSET 50
=> #<ActiveRecord::Relation []>
>>
7楼 ·
tinyfool 回复于 2014年06月16日

5楼 @common_zhang

6楼 @lgn21st

bundle exec rails s./bin/rails s 都是仍旧是相同的错误信息。

8楼 ·
lgn21st 回复于 2014年06月16日

7楼 @tinyfool 分别贴一下你的 GemfileGemfile.lock

9楼 ·
tinyfool 回复于 2014年06月16日

6楼 @lgn21st APP_PATH只出现在了./bin/rails

./bin/rails c的错误信息是

./bin/rails c
/Users/tinyfool/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/kaminari-0.16.1/lib/kaminari/sinatra.rb:1:in `require': cannot load such file -- sinatra/base (LoadError)
 from /Users/tinyfool/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/kaminari-0.16.1/lib/kaminari/sinatra.rb:1:in `<top (required)>'
 from /Users/tinyfool/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/bundler-1.6.2/lib/bundler/runtime.rb:76:in `require'
 from /Users/tinyfool/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/bundler-1.6.2/lib/bundler/runtime.rb:76:in `block (2 levels) in require'
 from /Users/tinyfool/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/bundler-1.6.2/lib/bundler/runtime.rb:72:in `each'
 from /Users/tinyfool/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/bundler-1.6.2/lib/bundler/runtime.rb:72:in `block in require'
 from /Users/tinyfool/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/bundler-1.6.2/lib/bundler/runtime.rb:61:in `each'
 from /Users/tinyfool/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/bundler-1.6.2/lib/bundler/runtime.rb:61:in `require'
 from /Users/tinyfool/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/bundler-1.6.2/lib/bundler.rb:132:in `require'
 from /Users/tinyfool/work/democodes/config/application.rb:7:in `<top (required)>'
 from /Users/tinyfool/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/spring-1.1.3/lib/spring/application.rb:82:in `require'
 from /Users/tinyfool/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/spring-1.1.3/lib/spring/application.rb:82:in `preload'
 from /Users/tinyfool/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/spring-1.1.3/lib/spring/application.rb:140:in `serve'
 from /Users/tinyfool/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/spring-1.1.3/lib/spring/application.rb:128:in `block in run'
 from /Users/tinyfool/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/spring-1.1.3/lib/spring/application.rb:122:in `loop'
 from /Users/tinyfool/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/spring-1.1.3/lib/spring/application.rb:122:in `run'
 from /Users/tinyfool/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/spring-1.1.3/lib/spring/application/boot.rb:18:in `<top (required)>'
 from /Users/tinyfool/.rbenv/versions/2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
 from /Users/tinyfool/.rbenv/versions/2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
 from -e:1:in `<main>'

看着意思是说,我缺了sinatra这个东西?汗,这又是什么?

10楼 ·
tinyfool 回复于 2014年06月16日

6楼 @lgn21st Gemfile里面加入sinatra后,服务器启动了,分页也成功了

本帖有16个回复,因为您没有注册或者登录本站,所以只能看到本帖的10条回复。如果想看到全部回复,请注册或者登录本站。
登录 或者 注册
[顶 楼]
|
|
[底 楼]
|
|
[首 页]

AltStyle によって変換されたページ (->オリジナル) /