2015-04-21 52 views
3

users_controller.rb:导轨will_paginate错误:未定义的方法`TOTAL_PAGES'

@search_results = Notice.search('hello') 
if(params[:query]) 
    @search_results = Notice.search(params[:query]) 
end 

Notice.rb:

def self.search(search) 
    if search 
    Notice.where("content LIKE ?", "%#{search}%") 
    else 
    end 
end 

在视图:

<%= render 'shared/search_results' %> 

_search_results.html.erb部分:

<% if @search_results.any? %> 
    <ol class="notices"> 
    <%= render @search_results %> 
    </ol> 
    <%= will_paginate @search_results %> 
<% end %> 

我收到错误:undefined method total_pages for #<Notice::ActiveRecord_Relation:0x0000010f3e8888>

(这一切工作正常,无分页)。

如何解决这个问题?

+0

你需要在你的控制器的集合中调用'.paginate':'@search_results = @ search_results.paginate(page:params [:page],per_page:20)' – MrYoshiji

回答

5

从将分页文件:

## perform a paginated query: 
@posts = Post.paginate(:page => params[:page]) 

# or, use an explicit "per page" limit: 
Post.paginate(:page => params[:page], :per_page => 30) 

## render page links in the view: 
<%= will_paginate @posts %> 

所以,你的代码,你需要做的:

search_results = Notice.search('hello').paginate(page: params[:page]) 
if(params[:query]) 
    @search_results = Notice.search(params[:query]).paginate(page: params[:page]) 
end 

或新的语法中的ActiveRecord 3

search_results = Notice.search('hello').page(params[:page]) 
if(params[:query]) 
    @search_results = Notice.search(params[:query]).page(params[:page]) 
end 
相关问题