Решить проблему, чтобы разбить итерацию с помощью Kaminari - PullRequest
0 голосов
/ 03 февраля 2020

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

Я использую рельсы 6 и ruby 2.5

в моем контроллере я иметь это

def dashboard
    user_gigs = current_user.gigs
    @user_gigs_pager = Kaminari.paginate_array(user_gigs).page(params[:page]).per(4)
  end

тогда, на мой взгляд, я называю paginate

<div class="card">
   <div class="card-header-title is-centered">
     <%= paginate @user_gigs_pager %>
   </div>
</div>

это мой полный вид кода

 <% current_user.gigs.each do |gig| %>
                  <%# <% user_gigs = current_user.gigs  %>
                    <div class="column is-one-third">
                        <div class="card">
                            <div class="card-image">
                              <%= link_to edit_gig_path(gig) do %>
                                <figure class="image is-4by3">
                                    <!-- Gig Cover Image Here -->
                                    <%= image_tag gig_cover(gig) %>
                                </figure>
                              <% end %>
                            </div>

                            <div class="card-content p-t-5 p-b-5">
                                <p class="subtitle is-6 m-b-5"><%= link_to gig.title.truncate(20), gig_path(gig) %></p>
                                <span class="star-review"><i class="fa fa-star"></i>
                                  <%= gig.average_rating %> <span class="star-review">(<%= gig.reviews.count %>)</span>
                                </span>
                            </div>

                            <footer class="card-footer">
                              <p class="deletegig">
                                <%= link_to destroy_gig_path(gig), method: :delete, data: { confirm: "are you sure"} do  %>
                                  <span class="icon has-text-danger">
                                    <i class="far fa-trash-alt"></i>
                                  </span>
                                <% end %>
                              </p>
                               <% basic_price = gig.pricings.find{ |p| p.pricing_type == 'basic' }%>
                                <a class="has-text-danger is-block card-footer-item has-text-right">
                                  <% if !basic_price.nil? %>
                                    <span class="small-title">Points</span> <i class="fab fa-bitcoin"></i>
                                    <strong><%=  basic_price.price %></strong>
                                  <% else %>
                                    <strong>
                                      <span class="small-title has-text-dark">Pas de point</span>
                                    </strong>
                                  <% end %>
                                </a>
                            </footer>

                        </div>
                    </div>

                  <% end %>
                </div>
            </div>
        </div>
          <div class="card">
              <div class="card-header-title is-centered">
                <%= paginate @user_gigs_pager %>
              </div>
          </div>

Ответы [ 2 ]

0 голосов
/ 04 февраля 2020

Решением было применить нумерацию страниц к ассоциации ActiveRecord вместо массива .

Так что в моем контроллере это должно быть

 @user_gigs_pager = current_user.gigs.page(params[:page]).per(4)

затем в представлении

<% @user_gigs_pager.each do |gig| %>
....

<%= paginate @user_gigs_pager %>
0 голосов
/ 04 февраля 2020

Kaminari.paginate_array(user_gigs).page(params[:page]).per(4)

ожидает номер страницы в качестве аргумента page и количество записей на странице в качестве аргумента per.

Ваш params должен содержать номер страницы (т.е. 1, 2 или 3 ...) в ключе :page.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...