[英]how to use Kaminari pagination in header
我正在嘗試創建一個像facebook這樣的分頁(通過Kaminari)的通知中心。
我希望這個中心顯示來自任何頁面的分頁(該中心包含在頭文件中)。
現在我已經編寫了下面的代碼,然后在我訪問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 %>
我建議創建一個單獨的控制器動作來處理ajax請求:
class ItemsController
def paginate
end
end
然后在views/items/paginate.js.erb
下移動js.erb
代碼。
Kaminari的link_to_next_page
幫助器使用link_to
,因此應該可以添加controller
和action
參數鏈接:
<%=
link_to_next_page @items, 'more',
controller: 'items',
action: 'paginate',
remote: true,
id: 'more_link'
%>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.