如何在部分导轨中使用Javascript?

时间:2014-05-16 06:03:28

标签: javascript jquery ruby-on-rails ajax

我正在尝试通过使用AJAX渲染部分轨道来将滑块设置为我创建的弹出窗口。弹出窗口工作正常,但我的Javascript似乎没有任何效果。

这基本上就是我的代码。

的javascript

$(document).ajaxSuccess(function(event, xhr, settings) {
    $(xhr.responseText).appendTo('body').modal();
});
$('.flexslider').flexslider({
    animation: "slide"
});

弹出

.col-md-6
    .flexslider
        %ul.slides
            %li
                %img(src="http://g-ecx.images-amazon.com/images/G/01/kindle/dp/2013/KT/feature-cs._V355642982_.jpg")
            %li
                %img(src="http://g-ecx.images-amazon.com/images/G/01/kindle/dp/2013/KT/feature-camera._V355723652_.jpg")
            %li
                %img(src="http://g-ecx.images-amazon.com/images/G/01/kindle/dp/2013/KT/feature-wifi._V355643083_.jpg")
            %li
                %img(src="http://g-ecx.images-amazon.com/images/G/01/kindle/dp/2013/KT/feature-cs._V355642982_.jpg")

控制器

render partial: 'product', locals: {product: @product}, layout: false if request.xhr?

1 个答案:

答案 0 :(得分:0)

我认为您的JS可能需要从dom ready块调用才能工作。

这就是我用方便的方式包含js的方法。在我的布局中,我屈服于两个代码块:一个用于javascript标记,另一个用于在dom ready块中运行的代码。所以我的布局看起来像这样:

#at the bottom of the body tag (inside it)

<%= yield :javascript_includes %>

<script type="text/javascript">
  $(function() {
     <%= yield :jquery_ready %> 
  });   
</script>   

这使我能够将JS添加到我的部分和模板中,如下所示:

<% content_for :javascript_includes do %>
  <% javascript_include tag "someLibrary.js" %>
<% end %>

和/或

<% content_for :jquery_ready do %>
  $("#foo").click(function(){ doStuff()});
<% end %>

这些包含可以在模板/部分中的任何地方完成,但我的惯例是始终将它们放在顶部,以使它们更加明显。