在Rails 4中使用turbolink重定向到其他页面时重新加载Javascript

时间:2016-06-16 11:03:27

标签: javascript ruby-on-rails ruby-on-rails-4

在我的应用程序中,仅在页面完全加载时才显示表格页面。应用程序中有两个这样的页面。为实现这一点,我设置了' style =" display:none"'对于相应视图中的表格以及页面完全加载时,我使用' $(' mytable')。show()'来显示Javascript文件中的表格。第一页有链接到应该显示表的其他类似页面,但是当我点击链接时,其他页面上的表仍然是隐藏的。我知道这是因为Javascript(取消隐藏表)不会再次执行。如何在这两个页面之间共享Javascript?注意我还有其他Javascript代码,我想在这两个页面之间共享。

已知解决方案: 删除' turbolinks'为我做的伎俩,但每次我在页面之间切换时,加载速度很慢。是否有办法使这项工作不会影响性能。

我的Javascript位于app / assets / javascripts / myscript.js'。

我有一个控制器' mycontroller'和两个动作,'索引'查看' view1'和' index1'查看' view2'。两个视图都显示具有不同数据的类似表。

我尝试通过互联网搜索但找不到相关帖子。

如果我需要分享更多细节,请与我们联系。

感谢您的帮助!

解决方案:我在Rails指南中找到了解决方案,请参阅下面的答案。

3 个答案:

答案 0 :(得分:3)

直接来自Rails guide

  

5.2页面更改事件编写CoffeeScript时,您经常需要在页面加载时进行某种处理。使用jQuery,你可以写   像这样的东西:

     

$(document).ready -> alert "page has loaded!"但是,因为   Turbolinks会覆盖正常的页面加载过程,即事件   这依赖不会被解雇。如果你有代码看起来像   为此,您必须更改代码才能执行此操作:

     

$(document).on "turbolinks:load", -> alert "page has loaded!"   更多详细信息,包括您可以绑定的其他事件,请查看   Turbolinks README。

只需修改该示例即可重新加载表格,而非警报。

答案 1 :(得分:0)

尝试在第二页底部添加此内容

<script>
 $(document).ready(main);
</script>

答案 2 :(得分:0)

阅读this link的第5.2节,这对我有用:

  
    

编写CoffeeScript时,您经常需要在页面加载时进行某种处理。使用jQuery,你会写这样的东西:

         

$(document).ready - &gt;       警告“页面已加载!”

         

但是,由于Turbolinks会覆盖正常的页面加载过程,因此不会触发依赖此事件的事件。如果您的代码如下所示,则必须更改代码才能执行此操作:

         

$(document).on“page:change”, - &gt;       警告“页面已加载!”