如何在页眉中使用 Kaminari 分页
how to use Kaminari pagination in header
我正在尝试创建一个具有分页功能的通知中心(通过 Kaminari)
喜欢脸书。
我希望这个中心显示任何页面的分页(这个中心包含在一个头文件中)。
现在我写了下面的代码,然后当我访问home.html时它会正确显示
但是它的分页在其他页面中不起作用(例如views/test/test.html.erb)。
可能,ajax 似乎无法读取 js 文件,所以如果我将 test.js.erb 文件放在 views/test 中,它将起作用。
从运维的角度来看,这是不可取的方式。
如何只使用一个 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 %>
我建议创建一个单独的控制器操作来处理 ajax 请求:
class ItemsController
def paginate
end
end
然后将 js.erb
代码移动到 views/items/paginate.js.erb
.
下
Kaminari 的 link_to_next_page
助手在内部使用 link_to
,因此应该可以将 controller
和 action
参数添加到 link:
<%=
link_to_next_page @items, 'more',
controller: 'items',
action: 'paginate',
remote: true,
id: 'more_link'
%>
我正在尝试创建一个具有分页功能的通知中心(通过 Kaminari) 喜欢脸书。
我希望这个中心显示任何页面的分页(这个中心包含在一个头文件中)。
现在我写了下面的代码,然后当我访问home.html时它会正确显示 但是它的分页在其他页面中不起作用(例如views/test/test.html.erb)。 可能,ajax 似乎无法读取 js 文件,所以如果我将 test.js.erb 文件放在 views/test 中,它将起作用。
从运维的角度来看,这是不可取的方式。
如何只使用一个 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 %>
我建议创建一个单独的控制器操作来处理 ajax 请求:
class ItemsController
def paginate
end
end
然后将 js.erb
代码移动到 views/items/paginate.js.erb
.
Kaminari 的 link_to_next_page
助手在内部使用 link_to
,因此应该可以将 controller
和 action
参数添加到 link:
<%=
link_to_next_page @items, 'more',
controller: 'items',
action: 'paginate',
remote: true,
id: 'more_link'
%>