diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG
index 75c22e8e98..46a1861f67 100644
--- a/actionpack/CHANGELOG
+++ b/actionpack/CHANGELOG
@@ -1,5 +1,7 @@
*SVN*
+* Add :script option to in_place_editor to support evalScripts (closes #4194) [codyfauser@gmail.com]
+
* Fix mixed case enumerable methods in the JavaScript Collection Proxy (closes #4314) [codyfauser@gmail.com]
* Undo accidental escaping for mail_to; add regression test. [Nicholas Seckar]
diff --git a/actionpack/lib/action_view/helpers/java_script_macros_helper.rb b/actionpack/lib/action_view/helpers/java_script_macros_helper.rb
index 4237909f1d..c42ee687e4 100644
--- a/actionpack/lib/action_view/helpers/java_script_macros_helper.rb
+++ b/actionpack/lib/action_view/helpers/java_script_macros_helper.rb
@@ -39,6 +39,7 @@ module ActionView
# :options:: Pass through options to the AJAX call (see prototype's Ajax.Updater)
# :with:: JavaScript snippet that should return what is to be sent
# in the AJAX call, +form+ is an implicit parameter
+ # :script:: Instructs the in-place editor to evaluate the remote JavaScript response (default: false)
def in_place_editor(field_id, options = {})
function = "new Ajax.InPlaceEditor("
function << "'#{field_id}', "
@@ -54,6 +55,7 @@ module ActionView
js_options['externalControl'] = "'#{options[:external_control]}'" if options[:external_control]
js_options['loadTextURL'] = "'#{url_for(options[:load_text_url])}'" if options[:load_text_url]
js_options['ajaxOptions'] = options[:options] if options[:options]
+ js_options['evalScripts'] = options[:script] if options[:script]
js_options['callback'] = "function(form) { return #{options[:with]} }" if options[:with]
function << (', ' + options_for_javascript(js_options)) unless js_options.empty?
diff --git a/actionpack/test/template/java_script_macros_helper_test.rb b/actionpack/test/template/java_script_macros_helper_test.rb
index 1a18c00e72..59fe2398e5 100644
--- a/actionpack/test/template/java_script_macros_helper_test.rb
+++ b/actionpack/test/template/java_script_macros_helper_test.rb
@@ -91,4 +91,11 @@ class JavaScriptMacrosHelperTest < Test::Unit::TestCase
:load_text_url => { :action => "action_to_get_value" })
end
+ def test_in_place_editor_eval_scripts
+ assert_match "Ajax.InPlaceEditor('id-goes-here', 'http://www.example.com/action_to_set_value', {evalScripts:true})",
+ in_place_editor( 'id-goes-here',
+ :url => { :action => "action_to_set_value" },
+ :script => true )
+ end
+
end