Rails-仅对一个视图进行JavaScript定时刷新

Rails-仅对一个视图进行JavaScript定时刷新,javascript,ruby-on-rails,Javascript,Ruby On Rails,我有一个rails应用程序,我希望每五秒钟只刷新一个视图。我将以下内容放在assets/javascripts/application.js中 function timedRefresh(timeoutPeriod) { setTimeout("location.reload(true);",timeoutPeriod); } $(document).ready(function(){ timedRefresh(5000); }); 但是,这将导致每五秒钟刷新一次每个视图。如何使

我有一个rails应用程序,我希望每五秒钟只刷新一个视图。我将以下内容放在assets/javascripts/application.js中

function timedRefresh(timeoutPeriod) {
    setTimeout("location.reload(true);",timeoutPeriod);
}

$(document).ready(function(){
  timedRefresh(5000);
});
但是,这将导致每五秒钟刷新一次每个视图。如何使此JavaScript仅应用于一个视图


(使用Rails 3.2.5)

您可以使用视图底部的标记

some_view.html.erb

...
contents
...
<script type="text/javascript">
  Put javascript code here...
</script>
<div id = "refreshable">
    <!-- So on and so forth... -->
</div>
。。。
目录
...
把javascript代码放在这里。。。

这将使此脚本仅对someview.html.erb可用。application.js使脚本成为全局脚本。

如果您想将js保存在application.js中,只需检查是否存在特定元素,然后采取相应的行动即可。例如:

some_vew.html.erb

...
contents
...
<script type="text/javascript">
  Put javascript code here...
</script>
<div id = "refreshable">
    <!-- So on and so forth... -->
</div>

重写
timedRefresh()
,以提取新数据并将其应用到您想要的页面部分,而不是仅仅重新加载。这将是一个非常复杂的想法,不是吗?进行AJAX调用,解析JSON,创建DOM元素……哦,我知道你现在要做什么了。。。我以为你想刷新页面的一部分,而不是一个特定的视图。最简单的解决方案可能是将其放入视图的JavaScript资产中。或者按照@Turd Ferguson的回答来做。我认为我没有特定于我的视图的JavaScript资产,是吗?据我所知,JavaScript资产的唯一路径是app/assets/javascripts,它们适用于我的整个应用程序,也许你不会;这取决于你是如何安排的。在任何情况下,有条件地包含一个JavaScript资产都是非常容易的,我对另一个解决方案有点偏爱,因为他们说最好将JavaScript分离到一个单独的文件中