diff options
author | Thomas Fuchs <thomas@fesch.at> | 2007-06-03 14:27:43 +0000 |
---|---|---|
committer | Thomas Fuchs <thomas@fesch.at> | 2007-06-03 14:27:43 +0000 |
commit | 3cfb894bac2f25f2160189e4909ae7756927d8ad (patch) | |
tree | 4cd2be3584a79cf0232e8d2011d38d6e13456205 /actionpack | |
parent | 13058b018861053be8bf5dbec4cafe51b89e173f (diff) | |
download | rails-3cfb894bac2f25f2160189e4909ae7756927d8ad.tar.gz rails-3cfb894bac2f25f2160189e4909ae7756927d8ad.tar.bz2 rails-3cfb894bac2f25f2160189e4909ae7756927d8ad.zip |
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
Diffstat (limited to 'actionpack')
-rw-r--r-- | actionpack/CHANGELOG | 2 | ||||
-rw-r--r-- | actionpack/lib/action_view/helpers/prototype_helper.rb | 2 | ||||
-rw-r--r-- | actionpack/test/template/prototype_helper_test.rb | 11 |
3 files changed, 14 insertions, 1 deletions
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 = %(<script type=\"text/javascript\">\n//<![CDATA[\nnew Form.Element.Observer('glass', 300, function(element, value) {new Ajax.Request('http://www.example.com/check_value', {asynchronous:true, evalScripts:true, parameters:'id=' + value})})\n//]]>\n</script>) + 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 = %(<script type=\"text/javascript\">\n//<![CDATA[\nnew Form.Element.Observer('glass', 300, function(element, value) {new Ajax.Request('http://www.example.com/check_value', {asynchronous:true, evalScripts:true, parameters:{'id':value}})})\n//]]>\n</script>) + 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 %(<script type=\"text/javascript\">\n//<![CDATA[\nnew Form.Element.Observer('glass', 300, function(element, value) {alert('Element changed')})\n//]]>\n</script>), observe_field("glass", :frequency => 5.minutes, :function => "alert('Element changed')") |