Вопрос по ruby-on-rails-3, ruby-on-rails, ruby – kaminari и order_by

3

Поэтому я перечисляю всех участников моего сайта и группирую их по именам, чтобы список был организован лучше. Так что, на мой взгляд, все мои участники сгруппированы по первой букве их имени, например:

B

Bakedfish
Beercan Dan
Bigmike33x 

C

Cynicalassassin
ect..

В любом случае, я также хочу разбить этот список на страницы, но не могу добавить аргументы пагинации Kaminari к своему контроллеру, если я использую заказ, потому что я получаю неопределенную ошибку метода.

так что это не работает:

@members = Member.all.group_by{|u| u.fullname[0].titleize}.page(params[:page]).per(18)

мой взгляд выглядит так:

<div class="content">
  <%= paginate @members %>
</div>
    <% @members.keys.sort.each do |starting_letter| %>
            <h3>
            <%= link_to starting_letter, {:action => :browse, :controller =>:members, :letter => starting_letter } %>
</h3>
      <ol>
                <% @members[starting_letter].each do |member| %>
                    <li>
                        <% if member.is_artist? %>
                            <%= link_to member.full_name, member_path(member), :class=>"artist" %>
                        <% else %>
                            <%= link_to member.full_name, member_path(member) %>
                        <% end %>
                    </li>
                <% end %>
        </ol>
    <% end %>

Вот мое сообщение об ошибке:

NoMethodError (undefined method `page' for #<Hash:0x007f78d4bf48f8>):
  app/controllers/members_controller.rb:10:in `index'
Было бы лучше, если вы напишите ошибку (сообщение, строка и т. Д.) melekes
Я добавил сообщение об ошибке, строка в контроллере, на которую она ссылается, уже там. rugbert

Ваш Ответ

1   ответ
8

page метод дляActiveRecord::Relation ноMember.all.group_by возвращает хеш Вот почему вы получаете это исключение.

Я предлагаю выполнить группировку после нумерации страниц, например:

@members = Member.order(:full_name).page(params[:page]).per(18).to_a.group_by { |u| u.fullname[0].upcase }

UPDATE

Для того, чтобы использоватьpaginate помощник вы можете назначить 2 переменные, например:

@paginated_members = Member.order(:full_name).page(params[:page]).per(18)
@members = @paginated_members.to_a.group_by { |u| u.fullname[0].upcase }

И пройти@paginated_members кpaginate помощник.

Я обновил ответ относительноpaginate использование помощника.
Ааа, хорошо, хорошо, что ошибка устранена, но теперь помощник по разбиению на страницы не работает, я получаюundefined method current_page & apos; `в строке<%= paginate @members %> rugbert
Круто, спасибо! rugbert
Отличное решение - спасибо!

Похожие вопросы