我的rails应用程序加载要在猫头鹰轮播中显示的对象列表:
objects_controller.rb
class ObjectsController < ApplicationController
respond_to :html, :json, :js
def index
@objects = Object.first(5)
end
index.html.erb:
<div id="object_carousel" class="owl-carousel">
<%= render 'objects_loop', objects: @objects %>
</div>
<div class="hidden">
<%= link_to "get more objects", objects_path, remote: true, :id => "more-objects" %>
</div>
objects_loop.rb:
<% objects.each_with_index do |event, index| %>
<%= render 'object', object: object, index: index %>
<% end %>
对象部分:
<div class="col-sm-12 object" data-index="<%= index %>">
<!-- stuff about the object -->
<div class="button">Destroy Object</div>
</div>
我有JS观察到达最后一个对象的时间,然后获取新对象:
$('.button').click(function(){
var objectIndex = $(this).closest(".object").data("index")
if (objectIndex === 4) {
$("#more-objects").click();
};
});
然后index.js.erb部分重新渲染objects_loop:
$("#object_carousel").html("<%= j render(partial: 'objects_loop', :locals => { :objects => @objects }) %>")
我可以在HTML中看到对象实际上是在DOM中正确加载的。但它们并不可见......所以我怀疑OwlCarousel发生了一些奇怪的事情。
如何使用新对象继续旋转木马?从用户的角度来看,他们不应该注意到发生的任何事情。