Rails:动态地将项目添加到Owl Carousel中

时间:2016-10-05 18:43:05

标签: jquery ruby-on-rails owl-carousel

我的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发生了一些奇怪的事情。

如何使用新对象继续旋转木马?从用户的角度来看,他们不应该注意到发生的任何事情。

0 个答案:

没有答案