【问题标题】:how to use Kaminari pagination in header如何在页眉中使用 Kaminari 分页
【发布时间】:2017-05-14 17:48:29
【问题描述】:

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

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

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

从运维的角度来看,这是不可取的方式。

如何仅使用一个 js.erb 文件来读取分页?谢谢你的帮助

源码如下。

型号

app/models/item.rb

class Item < ActiveRecord::Base
  paginates_per 50
end  

控制器


app/controller/items_controller.rb

before_action :pagination


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

查看


app/views/static/home.html.erb

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

app/views/static/_header.html.erb

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

app/views/static/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')) %>");

app/views/application/_items.html.erb

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

app/views/application/__items.html.erb

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

【问题讨论】:

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


    【解决方案1】:

    我建议创建一个单独的控制器操作来处理 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'
    %>
    

    【讨论】:

    • 感谢您的回答!除了您的解决方案,设置路由,最后它完美运行!特别感谢您对 link_to helper 的评论!
    猜你喜欢
    • 2014-04-27
    • 2016-04-15
    • 2012-02-18
    • 2012-02-04
    • 2013-01-10
    • 1970-01-01
    • 1970-01-01
    • 2011-08-02
    • 2014-06-26
    相关资源
    最近更新 更多