';将分页未定义的方法';在视图中但不在控制器中-Sinatra 2.0、ActiveRecord 5.0
我添加了will_paginate gem,如gem中所述 为了西纳特拉。我从未在控制器内部得到“no method error”,但在routed视图中,我一直得到“no method for will_paginate#”。与Rails(,)相关的答案无法解决此问题。这个相关的问题很接近 下面是所用代码的概要: 控制器应用程序中: 正如我所说,它只会打断视图,而不会打断控制器,这让我相信这是Sinatra特有的案例。我的解决方案是: 控制器内应用程序';将分页未定义的方法';在视图中但不在控制器中-Sinatra 2.0、ActiveRecord 5.0,sinatra,will-paginate,sinatra-activerecord,Sinatra,Will Paginate,Sinatra Activerecord,我添加了will_paginate gem,如gem中所述 为了西纳特拉。我从未在控制器内部得到“no method error”,但在routed视图中,我一直得到“no method for will_paginate#”。与Rails(,)相关的答案无法解决此问题。这个相关的问题很接近 下面是所用代码的概要: 控制器应用程序中: 正如我所说,它只会打断视图,而不会打断控制器,这让我相信这是Sinatra特有的案例。我的解决方案是: 控制器内应用程序 class Post
class Post
这肯定是一个Sinatra::Helper问题,因为这个特定的答案也适用。选择你的毒药
我在这里的理解是,WillPaginate模块将自己直接注入Sinatra的Helpers模块(猴子补丁)。在某些环境中,如我的环境中,您必须通过注册将其扩展到Sinatra。希望这能节省一些时间。非常有帮助,您发布了这篇文章,谢谢!在Sinatra中将一些路由拆分为单独的控制器类时遇到了同样的愚蠢问题。
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
<%= will_paginate @posts %>
gem 'will_paginate', '~> 3.1.0'
class Post < Sinatra::Base
configure do
register WillPaginate::Sinatra
end
end