aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack
diff options
context:
space:
mode:
Diffstat (limited to 'actionpack')
-rw-r--r--actionpack/lib/action_view/helpers/ajax_helper.rb30
-rw-r--r--actionpack/test/javascript/ajax_test.rb14
2 files changed, 26 insertions, 18 deletions
diff --git a/actionpack/lib/action_view/helpers/ajax_helper.rb b/actionpack/lib/action_view/helpers/ajax_helper.rb
index 93a79766dc..807c943d2c 100644
--- a/actionpack/lib/action_view/helpers/ajax_helper.rb
+++ b/actionpack/lib/action_view/helpers/ajax_helper.rb
@@ -55,20 +55,12 @@ module ActionView
end
def observe_field(name, options = {})
- attributes = extract_remote_attributes!(options)
- callback = options.delete(:function)
- frequency = options.delete(:frequency)
+ options[:observed] = name
- attributes["data-name"] = name
+ attributes = extract_remote_attributes!(options)
+ attributes.merge!(extract_observer_attributes!(options))
attributes["data-js-type"] = "field_observer"
- if callback
- attributes["data-observer-code"] = create_js_function(callback, "element", "value")
- end
- if frequency && frequency != 0
- attributes["data-frequency"] = frequency.to_i
- end
-
script_decorator(attributes)
end
@@ -146,6 +138,22 @@ module ActionView
purge_unused_attributes!(attributes)
end
+ def extract_observer_attributes!(options)
+ attributes = {}
+ attributes["data-observed"] = options.delete(:observed)
+
+ callback = options.delete(:function)
+ frequency = options.delete(:frequency)
+ if callback
+ attributes["data-observer-code"] = create_js_function(callback, "element", "value")
+ end
+ if frequency && frequency != 0
+ attributes["data-frequency"] = frequency.to_i
+ end
+
+ attributes
+ end
+
def purge_unused_attributes!(attributes)
attributes.delete_if {|key, value| value.nil? }
attributes
diff --git a/actionpack/test/javascript/ajax_test.rb b/actionpack/test/javascript/ajax_test.rb
index 2ca47344e5..0cc4460870 100644
--- a/actionpack/test/javascript/ajax_test.rb
+++ b/actionpack/test/javascript/ajax_test.rb
@@ -382,17 +382,17 @@ class ObserveFieldTest < AjaxTestCase
test "using a url string" do
assert_html field(:url => "/some/other/url"),
- %w(script data-url="/some/other/url" data-name="title")
+ %w(script data-url="/some/other/url" data-observed="title")
end
test "using a url hash" do
assert_html field(:url => {:controller => :blog, :action => :update}),
- %w(script data-url="/url/hash" data-name="title")
+ %w(script data-url="/url/hash" data-observed="title")
end
test "using a :frequency option" do
assert_html field(:url => { :controller => :blog }, :frequency => 5.minutes),
- %w(script data-url="/url/hash" data-name="title" data-frequency="300")
+ %w(script data-url="/url/hash" data-observed="title" data-frequency="300")
end
test "using a :frequency option of 0" do
@@ -401,21 +401,21 @@ class ObserveFieldTest < AjaxTestCase
test "observe field with common options" do
assert_html observe_field("glass", :frequency => 5.minutes, :url => { :action => "reorder_if_empty" }),
- %w(script data-name="glass" data-frequency="300" data-url="/url/hash")
+ %w(script data-observed="glass" data-frequency="300" data-url="/url/hash")
end
# TODO: Consider using JSON instead of strings. Is using 'value' as a magical reference to the value of the observed field weird? (Rails2 does this) - BR
test "using a :with option" do
assert_html field(:with => "foo"),
- %w(script data-name="title" data-with="'foo=' + encodeURIComponent(value)")
+ %w(script data-observed="title" data-with="'foo=' + encodeURIComponent(value)")
assert_html field(:with => "'foo=' + encodeURIComponent(value)"),
- %w(script data-name="title" data-with="'foo=' + encodeURIComponent(value)")
+ %w(script data-observed="title" data-with="'foo=' + encodeURIComponent(value)")
end
test "using json in a :with option" do
assert_html field(:with => "{'id':value}"),
- %w(script data-name="title" data-with="{'id':value}")
+ %w(script data-observed="title" data-with="{'id':value}")
end
test "using :function for callback" do