2012-07-10 34 views
0

错误

undefined method `current' for nil:NilClass 
Extracted source (around line #28): 

代码

25: </tr> 
26: <% end %> 
27: </table> 
28: <%= link_to 'Previous page',{:page => @post_pages.current.previous } if @post_pages.current.previous %> 
29: <%= link_to 'Next page',{:page => @post_pages.current.next } if @post_pages.current.next %> 
30: <br /> 

控制器代码

# GET /posts 
    # GET /Posts.json 
    def index 
    @posts = Post.all 

    respond_to do |format| 
     format.html # index.html.erb 
     format.json { render :json => @posts } 
    end 
    end 
+0

什么是你的控制器代码看起来像你设置'@ post_pages'的价值? – 2012-07-10 20:36:39

+0

我生成的脚手架和它的假设自动生成@post_pages,对吗? – Abhimanyu 2012-07-10 22:10:22

+0

据我所知,除非你使用某种额外的分页宝石,它会给你一个'@ post_pages'变量。据我从控制器代码可以看出,你只有'@ posts'在你的视图中玩。是什么让你期待你也会拥有'@ post_pages'? – 2012-07-10 22:19:39

回答

1

我建议使用将分页宝石,作为一个以上评论者提到。

然后你会实现它是这样的(这是从创业板网页例子......):

## 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 %> 

在你的具体的例子,这将是这样的:

def index 
    @posts = Post.paginate(:page => params[:page]) 

    respond_to do |format| 
    format.html # index.html.erb 
    format.json { render :json => @posts } 
    end 
end 

而且你的看法会更简单:

<%= will_paginate @posts %> 

你会需要通过一些具体的工作,但它使日使事情变得容易很多。

这里有2个Railscasts会给你一些背景:

http://railscasts.com/episodes/174-pagination-with-ajax/

http://railscasts.com/episodes/240-search-sort-paginate-with-ajax

相关问题