2013-06-14 40 views
8

Tôi đang cố sử dụng đá quý will_paginate nhưng có gì đó không ổn. Tôi bị kẹt với lỗi undefined method `paginate'. Tôi đọc rất nhiều vấn đề và thử rất nhiều thứ. Đây là những gì tôi đã có:Phương thức chưa xác định `paginate '

Đây là LocationsController.rb tôi:

def index 
    @locations = Location.all  
    respond_to do |format| 
    @locations = @locations.paginate(:page => params[:page], :per_page => 10) 
    format.html #index.html.erb 
    format.json { render json: @locations } 
    end 
end 

Và đây là dòng will_paginate tôi trong tôi index.html.erb:

<%= will_paginate @locations %> 

Và đây là lỗi:

undefined method `paginate' for #<Class:0xaa2e48c> 

Tôi cũng thêm phần yêu cầu vào sốcủa mình:

gem "will_paginate", "~> 3.0.4", :require => nil 

Và đây vào cuối environment.rb tôi:

require "will_paginate"` 

Trả lời

14

will_paginate không hoạt động như thế. paginate là một phương pháp của lớp Location:

def index 
    @locations = Location.paginate(page: params[:page], per_page: 10) 
    respond_to do |format| 
    format.html 
    format.json { render json: @locations } 
    end 
end 

Hơn nữa, sử dụng will_paginate bạn chỉ nên cần phải thêm dòng dưới đây trong Gemfile bạn, không có sự điều chỉnh trong environment.rb được yêu cầu:

gem "will_paginate", "~> 3.0.4" 
3

Bạn thử để phân vùng mảng. Hãy thử điều này:

def index 
    @locations = Location.paginate(:page => params[:page], :per_page => 10) 

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

Nếu bạn muốn đánh số trang mảng thấy Paginating an Array in Ruby with will_paginate

12

Hãy chắc chắn để khởi động lại máy chủ sau khi cài đặt đá quý 'will_paginate'.

Đây là vấn đề ngu ngốc trong trường hợp của tôi.

+0

Trớ trêu thay; Tôi đã sử dụng câu trả lời này làm giải pháp của tôi ba lần trong những năm qua. Không có vấn đề gì tôi làm; Tôi không bao giờ có thể nhớ để bắt đầu lại Rails S sau khi cài đặt đá quý! –

Các vấn đề liên quan