无法让Will_Paginate在我的rails应用程序上工作

时间:2013-03-31 22:07:54

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

我无法将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.上看到我的代码我是新发布的问题,但是我没有找到任何东西,在这里搜索,并尝试过遵循最佳做法。谢谢你的帮助。

3 个答案:

答案 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'似乎更好。

如果所有这些都无法解决您的问题,请尝试再次运行“捆绑安装”...捆绑包可能有问题...并重新启动您的服务器(从您的评论中编辑)

如果您找到了什么,请告诉我们!

干杯,