我一直在关注无尽页面上的railscast并且之前对 will_paginate 做过同样的事情,但是我遇到了错误,但是我尝试在我的特定情况下实现它。will_paginate gems 完美地工作,就我在 Chrome 中阅读开发人员工具所知道的而言,对 dom 的 jQuery 调用也是如此。问题在于返回的内容 - rails 不喜欢它。这是一些代码:
在videos.js.coffee
:
jQuery ->
if $('.pagination').length
$(window).scroll ->
url = $('.pagination .next_page').attr('href')
if url && $(window).scrollTop() > $(document).height() - $(window).height() - 50
$('.pagination').text("Fetching more videos...")
$.getScript(url)
$(window).scroll()
在我的views/users/index.js.erb
$('.carousel').append(' <%= j render(@recently_added_video) %>');
<% if @recently_added_video .next_page %>
$('.pagination').replaceWith('<%= j will_paginate(@recently_added_video) %>');
<% else %>
$('.pagination').remove();
<% end %>
在我的共享部分中,由users/index.erb.html
<div class="carousel" %>
<ul class="jcarousel-skin-recent">
<% @recently_added_video.each do |v| %>
<li><%= link_to image_tag(v.video_thumb(), width: 300), v %></li>
<% end %>
</ul>
</div>
<%= will_paginate @recently_added_video %>
这给了我开发日志中的以下错误:
Completed 500 Internal Server Error in 15ms
ActionView::Template::Error (Missing partial videos/video with {:locale=>[:en], :formats=>[:js, :html], :handlers=>[:erb, :builder, :coffee]}.
所以我然后尝试views/videos/_video.js.erb
使用与文件相同的代码创建一个部分users/index.js.erb
,但它给了我以下错误:
Rendered shared/_recentlyadded.html.erb (853.8ms)
Rendered users/index.html.erb within layouts/application (1741.4ms)
Rendered layouts/_header.html.erb (2.6ms)
Rendered layouts/_footer.html.erb (0.0ms)
Completed 200 OK in 1813ms (Views: 1801.0ms | ActiveRecord: 8.5ms | Sphinx: 0.0ms)
Illegal instruction: 4
正如你所看到的,它实际上也没有渲染_video
局部。
@recently_added_video
如果它是相关的,我试图调用的实例变量是在 中定义的,application_controller
并且可以与部分和一起正常工作will_paginate
。
任何人都可以帮助弄清楚出了什么问题吗?很迷茫!谢谢...