我正在尝试创建一个有分页的通知中心(通过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 %>
答案 0 :(得分:0)
我建议创建一个单独的控制器操作来处理ajax请求:
class ItemsController
def paginate
end
end
然后在js.erb
下移动views/items/paginate.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'
%>