如何在标题中使用Kaminari分页

时间:2017-05-14 17:48:29

标签: javascript ruby-on-rails ajax pagination kaminari

我正在尝试创建一个有分页的通知中心(通过Kaminari) 喜欢facebook。

我希望此中心显示来自任何页面的分页(此中心包含在头文件中)。

现在我已经编写了下面的代码,然后在我访问home.html时它会正确显示 但它的分页在其他页面中不起作用(例如views / test / test.html.erb)。 可能,ajax似乎无法读取js文件,所以如果我将test.js.erb文件放在views / test中,它就可以工作。

在操作和维护方面,这是不可取的方式。

如何只使用一个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 %>

1 个答案:

答案 0 :(得分:0)

我建议创建一个单独的控制器操作来处理ajax请求:

class ItemsController
  def paginate
  end
end

然后在js.erb下移动views/items/paginate.js.erb代码。

Kaminari的link_to_next_page助手使用link_to,因此应该可以添加controlleraction参数来链接:

<%= 
  link_to_next_page @items, 'more',
    controller: 'items',
    action: 'paginate',
    remote: true,
    id: 'more_link'
%>