簡體   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