繁体   English   中英

部分上的JavaScript-Rails上的ruby

[英]javascript on a partial - ruby on rails

我有一部分使用AJAX(原型框架)每3秒加载一次,方法是:

  <script type="text/javascript">
   new Ajax.PeriodicalUpdater('content', '/shouts/update.js', { method: 'get', frequency: 1});
</script>

这是控制器的一部分,用于加载部分:

respond_to do |format|
    format.js {render(:partial => 'content', :locals => {:content => @last_shout.content})}
end

这是部分“ _content.html.erb”的内容:

<h2><%= content %></h2>

到目前为止,一切都很好。

我想补充一点,每次部分重载时,将使用Scriptaculous框架将其淡入。 我将此代码添加到_content.html.erb部分:

 <script type="text/javascript">
$('content').fade({ duration: 3.0, from: 0, to: 1 });
</script>

问题在于,它没有在每次重新加载部分时都执行代码,而是仅执行了一次。 为了使每次加载部分代码都执行javascript代码,我需要做什么?

看看rjs文档... http://api.rubyonrails.org/classes/ActionView/Helpers/PrototypeHelper/JavaScriptGenerator/GeneratorMethods.html

您可以使用jrails将其与jquery一起使用...

然后代替

{render(:partial => 'content', :locals => {:content => @last_shout.content})}

您可以在关联的rjs文件中完成相同的操作,并添加其他一些功能。

使用起来很简单,在线上看一些例子。

我将褪色部分移到AjaxUpdater中:

<script type="text/javascript">
   new Ajax.PeriodicalUpdater('content', '/shouts/update.js', { method: 'get', frequency: 1, onComplete: function() {$('content').fade({ duration: 3.0, from: 0, to: 1 });}});
</script>

这可能是时间问题(在调用onComplete之前替换了文本,但是更早地评估了文本中的脚本。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM