как использовать пагинацию Kaminari в шапке

Я пытаюсь создать центр уведомлений с нумерацией страниц (через Kaminari), например facebook.

Я хочу, чтобы этот центр отображал нумерацию страниц с любой страницы (этот центр содержится в заголовочном файле).

Теперь я написал код ниже, затем он отображается соответствующим образом, когда я обращаюсь к home.html, но его разбиение на страницы не работает на другой странице (например, views/test/test.html.erb). Вероятно, ajax не может прочитать файл js, поэтому, если я помещу файл test.js.erb в представления/тест, он будет работать.

С точки зрения эксплуатации и обслуживания это нежелательный путь.

Как я могу прочитать разбиение на страницы, используя только один файл js.erb? спасибо за вашу помощь

Исходный код ниже.

Модель

приложение/модели/item.rb

class Item < ActiveRecord::Base
  paginates_per 50
end  

Контроллер


приложение/контроллер/items_controller.rb

before_action :pagination


def pagination
  @items = Item.page params[:page]
end

Просмотреть


приложение/представления/статические/home.html.erb

<%= render 'static/header' %>   <!-- reading partial header-->

приложение/представления/статические/_header.html.erb

<div><%= render 'application/items', items:@items %></div>      

приложение/представления/статические/home.js.erb

    $('#items').append("<%= escape_javascript(render '_items', object: @items) %>");
    $("#more_link").replaceWith("<%= escape_javascript(link_to_next_page(@items, 'more', remote: true, id: 'more_link')) %>");

приложение/представления/приложение/_items.html.erb

<div id="items">
  <%= render 'items' %>
</div>
<%= link_to_next_page @items, 'more', remote: true, id: 'more_link' %>

приложение/представления/приложение/__items.html.erb

<% @items.each do |item| %>
  <div><%= item.name %></div>
<% end %>


person cn_47    schedule 14.05.2017    source источник


Ответы (1)


Я бы предложил создать отдельное действие контроллера для обработки запросов ajax:

class ItemsController
  def paginate
  end
end

затем переместите код js.erb под views/items/paginate.js.erb.

Помощник link_to_next_page Kaminari использует link_to внутри, поэтому должна быть возможность добавить параметры controller и action для ссылки:

<%= 
  link_to_next_page @items, 'more',
    controller: 'items',
    action: 'paginate',
    remote: true,
    id: 'more_link'
%>
person Slava.K    schedule 14.05.2017
comment
Спасибо за ваш ответ! В дополнение к вашему решению, настройка маршрутизации, наконец-то все заработало! Отдельное спасибо за ваш комментарий к помощнику link_to! - person cn_47; 15.05.2017