Учебник Rails will_paginate поднимает undefined_method total_pages - PullRequest
0 голосов
/ 18 января 2012

Я застрял на некоторое время в руководстве по рельсам. Я в разделе 10.3, где мы должны добавить нумерацию страниц. Я добавил гем 'will-paginate' в свой Gemfile, и это индексное представление

<h1>All users</h1>
<%= will_paginate %>
<ul class="users">
<% @users.each do |user| %>
    <li>
        <%= gravatar_for user, :size => 30 %>
        <%= link_to user.name, user %>
    </li>
<% end %>
</ul>
<%= will_paginate %>

На сервере возникает следующая проблема:

ActionView::Template::Error (undefined method `total_pages' for #<Array:0xa0283fc>):
    1: <h1>All users</h1>
    2: <%= will_paginate %>
    3: <ul class="users">
    4:  <% @users.each do |user| %>
    5:      <li>

Я пытался найти его ... но ни одно из решений явно похожих проблем не помогло. Есть идеи?

Ответы [ 2 ]

2 голосов
/ 18 января 2012

Просто прокрутите вниз в руководстве - эта проблема решается в следующем разделе:)

Представление в листинге 10.27 пока не работает, поскольку в настоящее время @users содержит результаты User.all (листинг 10.20) класса Array, тогда как will_paginate ожидает объект класса WillPaginate :: Collection.

Затем вам нужно изменить UsersController, чтобы исправить это-

class UsersController < ApplicationController
  before_filter :authenticate, :only => [:index, :edit, :update]
  .
  .
  .
  def index
    @title = "All users"
    @users = User.paginate(:page => params[:page])
  end
  .
  .
  .
end
0 голосов
/ 18 января 2012

Полагаю, вам не хватает аргумента для will_paginate:

will_paginate @users
...