diff options
Diffstat (limited to 'actionpack')
-rw-r--r-- | actionpack/CHANGELOG | 7 | ||||
-rw-r--r-- | actionpack/lib/action_view/helpers/prototype_helper.rb | 15 | ||||
-rw-r--r-- | actionpack/test/template/prototype_helper_test.rb | 10 |
3 files changed, 32 insertions, 0 deletions
diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG index 5dca460814..5294d0bb19 100644 --- a/actionpack/CHANGELOG +++ b/actionpack/CHANGELOG @@ -1,5 +1,12 @@ *SVN* +* Added access to nested attributes in RJS #4548 [richcollins@gmail.com]. Examples: + + page['foo']['style'] # => $('foo').style; + page['foo']['style']['color'] # => $('blank_slate').style.color; + page['foo']['style']['color'] = 'red' # => $('blank_slate').style.color = 'red'; + page['foo']['style'].color = 'red' # => $('blank_slate').style.color = 'red'; + * Fixed that AssetTagHelper#image_tag and others using compute_public_path should not modify the incoming source argument (closes #5102) [eule@space.ch] * Deprecated the auto-appending of .png to AssetTagHelper#image_tag calls that doesn't have an extension [DHH] diff --git a/actionpack/lib/action_view/helpers/prototype_helper.rb b/actionpack/lib/action_view/helpers/prototype_helper.rb index 1b915882c6..1f547d4809 100644 --- a/actionpack/lib/action_view/helpers/prototype_helper.rb +++ b/actionpack/lib/action_view/helpers/prototype_helper.rb @@ -777,6 +777,21 @@ module ActionView super(generator, "$(#{id.to_json})") end + # Allows access of element attributes through +attribute+. Examples: + # + # page['foo']['style'] # => $('foo').style; + # page['foo']['style']['color'] # => $('blank_slate').style.color; + # page['foo']['style']['color'] = 'red' # => $('blank_slate').style.color = 'red'; + # page['foo']['style'].color = 'red' # => $('blank_slate').style.color = 'red'; + def [](attribute) + append_to_function_chain!(attribute) + self + end + + def []=(variable, value) + assign(variable, value) + end + def replace_html(*options_for_render) call 'update', @generator.send(:render, *options_for_render) end diff --git a/actionpack/test/template/prototype_helper_test.rb b/actionpack/test/template/prototype_helper_test.rb index 719a2f83ab..3954e38dcd 100644 --- a/actionpack/test/template/prototype_helper_test.rb +++ b/actionpack/test/template/prototype_helper_test.rb @@ -262,6 +262,16 @@ Element.update("baz", "<p>This is a test</p>"); @generator['hello'].hide assert_equal %($("hello").hide();), @generator.to_s end + + def test_element_proxy_variable_access + @generator['hello']['style'] + assert_equal %($("hello").style;), @generator.to_s + end + + def test_element_proxy_variable_access_with_assignment + @generator['hello']['style']['color'] = 'red' + assert_equal %($("hello").style.color = "red";), @generator.to_s + end def test_element_proxy_assignment @generator['hello'].width = 400 |