From 3cfb894bac2f25f2160189e4909ae7756927d8ad Mon Sep 17 00:00:00 2001 From: Thomas Fuchs Date: Sun, 3 Jun 2007 14:27:43 +0000 Subject: Allow JSON-style values for the :with option of observe_field. Closes #8557 [kommen] git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@6930 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- actionpack/CHANGELOG | 2 ++ actionpack/lib/action_view/helpers/prototype_helper.rb | 2 +- actionpack/test/template/prototype_helper_test.rb | 11 +++++++++++ 3 files changed, 14 insertions(+), 1 deletion(-) (limited to 'actionpack') diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG index d9c9651893..fe81c8366b 100644 --- a/actionpack/CHANGELOG +++ b/actionpack/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Allow JSON-style values for the :with option of observe_field. Closes #8557 [kommen] + * Remove RAILS_ROOT from backtrace paths. #8540 [Tim Pope] * Routing: map.resource :logo routes to LogosController so the controller may be reused for multiple nestings or namespaces. [Jeremy Kemper] diff --git a/actionpack/lib/action_view/helpers/prototype_helper.rb b/actionpack/lib/action_view/helpers/prototype_helper.rb index 8c3cd907ff..33e52bfa6e 100644 --- a/actionpack/lib/action_view/helpers/prototype_helper.rb +++ b/actionpack/lib/action_view/helpers/prototype_helper.rb @@ -698,7 +698,7 @@ module ActionView end def build_observer(klass, name, options = {}) - if options[:with] && (options[:with] !~ /[=(.]/) + if options[:with] && (options[:with] !~ /[\{=(.]/) options[:with] = "'#{options[:with]}=' + value" else options[:with] ||= 'value' unless options[:function] diff --git a/actionpack/test/template/prototype_helper_test.rb b/actionpack/test/template/prototype_helper_test.rb index 033e75de78..b669d20b22 100644 --- a/actionpack/test/template/prototype_helper_test.rb +++ b/actionpack/test/template/prototype_helper_test.rb @@ -174,6 +174,17 @@ class PrototypeHelperTest < Test::Unit::TestCase observe_field("glass", :frequency => 5.minutes, :url => { :action => "reorder_if_empty" }) end + def test_observe_field_using_with_option + expected = %() + assert_dom_equal expected, observe_field("glass", :frequency => 5.minutes, :url => { :action => "check_value" }, :with => 'id') + assert_dom_equal expected, observe_field("glass", :frequency => 5.minutes, :url => { :action => "check_value" }, :with => "'id=' + value") + end + + def test_observe_field_using_json_in_with_option + expected = %() + assert_dom_equal expected, observe_field("glass", :frequency => 5.minutes, :url => { :action => "check_value" }, :with => "{'id':value}") + end + def test_observe_field_using_function_for_callback assert_dom_equal %(), observe_field("glass", :frequency => 5.minutes, :function => "alert('Element changed')") -- cgit v1.2.3