2011-06-07 48 views
1

好的,我决定在rails 3项目中使用Kaminari进行分页。我跟着RailsCasts的视频http://railscasts.com/episodes/254-pagination-with-kaminariRails 3&Kaminari分页问题

一切都很顺利,直到点或运行服务器。

控制器/ stories_controller.rb

def index 
    @stories = Story.all 
    @pages = Story.page(params[:page]).per(3) 
    @stories = Story.search(params[:search]) 
end 

的意见/故事/ index.html.erb

<%= paginate @pages %> 

当我启动服务器的索引页有问题显示所有来自DB的故事并呈现分页视图(1 2 Next> Last»)。我错过了什么让分页工作?

回答

4

我仍然无法理解你的代码。为什么你将Story.all分配到第一行的@stories并覆盖第三行的变量?

无论如何,@stories将显示“来自数据库的所有故事”,因为您没有在@stories上调用分页方法(.per)。分页链接会显示分页计数,因为您在@page变量上调用per方法并将其传递给帮助程序。

我的意思是,您需要在将关系传递给<%= paginate %>帮助器之前先调用.per。 这很简单。

+0

嗨,我已经把'Story.page(params [:page])。per(3)'移到底部。分页现在可行,但现在我的搜索没有。 – ChrisMJ 2011-06-07 22:44:47

3

我想你想从搜索中获得结果,对吧? 尝试

@stories = Story.search(params[:search]).page(params[:page]).per(3) 

和喜欢的事:在你看来

<% @stories.each do |story| %> 
<%= render story %> 
<% end %> 
<%= paginate @stories %> 

+0

嗨,对不起,应该提到即时尝试分页整个结果集以及 – ChrisMJ 2011-06-07 17:45:11

+0

因此分页@页不起作用,对吧?尝试将@pages重命名为@mypages,看看它是否会更好。 – 2011-06-07 17:51:39

+0

好,所以把它和我的.per(3)改成了一个更大的数字,它实际上并没有显示分页链接,这表明分页在幕后工作......只是没有在前端 – ChrisMJ 2011-06-07 21:43:49