我无法将will_paginate用于我正在创建的pinterest样式rails应用程序。我一直在关注will_paginate railscast。 我从这一行得到一个错误: 编辑:这是我得到的错误:
NoMethodError in PinsController#index
undefined method `page' for "created_at desc":String
Rails.root: /Users etc....
Application Trace | Framework Trace | Full Trace
app/controllers/pins_controller.rb:6:in `index'
到目前为止我做了什么,我将will_paginate添加到我的gemfile并运行bundle所以:
这是我的Gemfile:
gem 'rails', '3.2.11'
gem 'jquery-rails
gem 'devise'
gem 'simple_form'
gem "paperclip", "~> 3.0"
gem 'aws-sdk'
gem 'will_paginate', '> 3.0'
gem 'bootstrap-will_paginate', '0.0.6'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
group :production do
gem 'pg'
end
group :development, :test do
gem 'sqlite3'
end
# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails', '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
gem 'bootstrap-sass', '~> 2.3.1.0'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer', :platforms => :ruby
gem 'uglifier', '>= 1.0.3'
end
这是我的pins_controller.rb(我得到了我的错误):
class PinsController < ApplicationController
before_filter :authenticate_user!, except: [:index]
# GET /pins
# GET /pins.json
def index
@pins = Pin.order("created_at desc").page(params[:page]).per_page(5)
respond_to do |format|
format.html # index.html.erb
format.json { render json: @pins }
end
end
这是我的index.html.erb:
<%= render 'pages/home' %>
<div id="pins">
<%= render @pins %>
<%= will_paginate @pins %>
</div>
如果你想在我开始使用will_paginate之前看到我一直在做什么,你可以在my github repo.上看到我的代码我是新发布的问题,但是我没有找到任何东西,在这里搜索,并尝试过遵循最佳做法。谢谢你的帮助。
答案 0 :(得分:0)
删除order
之后的空格:
Pin.order("created_at desc").page(params[:page]).per_page(5)
这很重要。对空间("created_at desc").page...
进行评估,然后传递给order
...
答案 1 :(得分:0)
你在控制器中调用will_paginate的方式存在问题,应该是
@pins = Pin.order('created_at desc').paginate(:per_page => 5, :page => params[:page])
而不是
@pins = Pin.order("created_at desc").page(params[:page]).per_page(5)
请参阅https://github.com/mislav/will_paginate#basic-will_paginate-use
希望这有帮助
干杯
答案 2 :(得分:0)
对不起你没有“订单”条款吗?
如果没有它可行,你可以试试这个:
@pins = Pin.paginate(:per_page => 5, :page => params[:page]).order('created_at DESC')
另外,我在你的宝石文件中看到了
gem'will_paginate','&gt; 3.0'
我不确定符号'&gt; 3.0'是对的; “〜&GT; 3.0'似乎更好。
如果所有这些都无法解决您的问题,请尝试再次运行“捆绑安装”...捆绑包可能有问题...并重新启动您的服务器(从您的评论中编辑)
如果您找到了什么,请告诉我们!
干杯,