我添加了gem installation中概述的will_paginate gem 对于Sinatra。我从来没有在控制器内部得到“无方法错误”,但在路由视图中,我一直得到一个'no method for will_paginate#'。与Rails(link1,link2)相关的答案并没有解决这个问题。这个mongoid相关的问题很接近。
以下是所用代码的概述:
在控制器应用中:
require 'will_paginate'
require 'will_paginate/active_record'
class SinatraApp < Sinatra::Base
get '/post' do
@post = Post.all.paginate(:page => params[:page], :per_page => 30)
erb :index
end
end
在erb索引视图中:
<%= will_paginate @posts %>
在Gemfile中:
gem 'will_paginate', '~> 3.1.0'
就像我说的那样,它只会在视图中打破,而不会在控制器中打破,这使我相信它是Sinatra特定的案例。
答案 0 :(得分:2)
我的解决方案是:
在控制器应用
中
class Post < Sinatra::Base
configure do
register WillPaginate::Sinatra
end
end
这绝对是一个Sinatra :: Helper问题,因为这个mongoid具体的答案也有效。选择你的毒药。
我的理解是WillPaginate模块直接注入Sinatra的Helpers模块(猴子补丁)。在某些环境中,比如我的,你必须通过注册将它扩展到Sinatra。希望能节省一些时间。