mirror of
https://github.com/github/rails.git
synced 2026-04-26 03:00:59 -04:00
Changed data-name to data-observed on observe_field
This commit is contained in:
committed by
Stefan Penner
parent
4536191d55
commit
d9765c3af5
@@ -55,20 +55,12 @@ module ActionView
|
||||
end
|
||||
|
||||
def observe_field(name, options = {})
|
||||
options[:observed] = name
|
||||
|
||||
attributes = extract_remote_attributes!(options)
|
||||
callback = options.delete(:function)
|
||||
frequency = options.delete(:frequency)
|
||||
|
||||
attributes["data-name"] = name
|
||||
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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user