Чтобы остановить наблюдателя, вы должны вызвать метод stop
для наблюдателя. По умолчанию observe_field
helper, создает неназванного наблюдателя. Вы должны исправить помощника, чтобы создать именованного наблюдателя.
Добавьте этот патч к вашему app/helpers/application_helper.rb
.
module ActionView::Helpers::PrototypeHelper
def observe_field(field_id, options = {})
poller_name, key = options.delete(:poller_name), "new Form.Element.Observer"
poller_name ? super :
super(field_id, options).gsub(Regexp.new(Regexp.escape(key)),
"var #{poller_name} = #{key}")
end
end
Создайте имя field observer
в вашем представлении:
<%= observe_field :word_word, :frequency => 0.25,
:poller_name => :word_word_poller
:function => "wordObserve('#{@word_str}')" %>
В функции обратного вызова java-script вызовите word_word_poller.stop
, чтобы прекратить наблюдение за полем.
Ссылка
1) Как удалить Form.Element.Observer