0

我无法让 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 之前我一直在做什么,你可以在我的 github repo 上看到我的代码。我是发布问题的新手,但在这里搜索没有找到任何东西,并尝试遵循最佳实践。谢谢你的帮助。

4

3 回答 3

0

删除之后的空格order

Pin.order("created_at desc").page(params[:page]).per_page(5)

这一点很重要。随着空间("created_at desc").page...被评估然后传递给order......

于 2013-04-01T02:13:23.527 回答
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

希望这可以帮助

干杯

于 2013-04-01T09:23:16.613 回答
0

抱歉,您是否尝试不使用“订单”条款?

如果没有它也能工作,你可以试试这个:

@pins = Pin.paginate(:per_page => 5, :page => params[:page]).order('created_at DESC')

另外,我在你的 gem 文件中看到了

宝石'will_paginate','> 3.0'

我不确定符号 '> 3.0' 是否正确;'~> 3.0' 似乎更好。

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

如果您发现了什么,请告诉我们!

干杯,

于 2013-04-01T16:45:52.333 回答