rails:3922
From: dezawa <dezawa@a...>
Date: Fri, 23 Aug 2013 16:35:06 +0900
Subject: [rails:3922] Re: periodically_call_remote を途中で止める方法はありますか
periodically_call_remoteを止めることできました。 前島さまのpostでなるほど、とjavascriptを久〜〜〜〜しぶりに 書くか、とリハビリのために prototype.js を眺めていて PeriodicalExecute に stopメソッドが定義されているのに 気がつきました。 で、prototype.rbのperiodically_call_remoteメソッドを application_helper.rbにコピり def periodically_call_remote_with_timer_id として少し手を加える ことでうまく動くように、ではない、うまく止まるようになりました 有難うございました。 ####### new PeriodicalExecuter(function() {...} を返すのではなく TimerID_#{options[:update]} = new PeriodicalExecuter(function() {...} を返すようにし controllerにて render :update do |page| page.TimerIDHogeFoo.stop if タイマー停止条件 page.replace_html "tag名", html_文字列 end とすることで成功。 アイデアはすぐ浮かんだのですが、TypeError: element is null や、識別子の未定義エラー に悩まされてました。 分かったことは、 options[:update] = "hoge_foo" のとき、 TimerID_#{options[:update]} = new PeriodicalExecuter(function() {...} としても、作られる javascript では TimerID_hoge_foo = new ... ではなくString#classifyされ TimerIDHogeFoo = new ... になってました。 def periodically_call_remote_with_timerID(options = {}) frequency = options[:frequency] || 10 # every ten seconds by default # update は controller や *.rjs で行うので、 # options[:update] は削除しておく timerid= "timerID_#{options.delete(:update)}".classify code = "#{timerid} = new PeriodicalExecuter(function() {#{remote_function(options)}}, #{frequency}); " javascript_tag(code) end -- ML: rails@r... 使い方: http://QuickML.com/
3918 2013-08-15 00:20 [dezawa@a... ] periodically_call_remote を途中で止める方法はありますか @ 3919 2013-08-16 16:14 ┗[netwillnet@g... ] 3920 2013-08-20 12:01 ┣[dezawa@a... ] -> 3922 2013-08-23 09:35 ┃┗[dezawa@a... ] 3921 2013-08-23 09:03 ┗[dezawa@a... ]