Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在页眉中使用Kaminari分页_Javascript_Ruby On Rails_Ajax_Pagination_Kaminari - Fatal编程技术网

Javascript 如何在页眉中使用Kaminari分页

Javascript 如何在页眉中使用Kaminari分页,javascript,ruby-on-rails,ajax,pagination,kaminari,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文件读取

我正在尝试创建一个具有分页功能的通知中心(通过Kaminari) 比如facebook

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

现在我已经编写了下面的代码,当我访问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/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')) %>");
$('#items')。追加(“”);
$(“#更多链接”)。替换为(“”);
app/views/application/_items.html.erb

<div id="items">
  <%= render 'items' %>
</div>
<%= link_to_next_page @items, 'more', remote: true, id: 'more_link' %>
<% @items.each do |item| %>
  <div><%= item.name %></div>
<% end %>

app/views/application/_items.html.erb

<div id="items">
  <%= render 'items' %>
</div>
<%= link_to_next_page @items, 'more', remote: true, id: 'more_link' %>
<% @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_页面
助手在内部使用
link_to
,因此应该可以添加
控制器
操作
参数以链接:

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

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

class ItemsController
  def paginate
  end
end
然后将
js.erb
代码移动到
views/items/paginate.js.erb

Kaminari的
link_to_next_页面
助手在内部使用
link_to
,因此应该可以添加
控制器
操作
参数以链接:

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


谢谢您的回答!除了您的解决方案,设置路由,最后它工作得非常完美!特别感谢您对“链接到帮助者”的评论!谢谢你的回答!除了您的解决方案,设置路由,最后它工作得非常完美!特别感谢您对“链接到帮助者”的评论!