evalScripts: true ничего не делает с редактором Ajax inplace - PullRequest
0 голосов
/ 22 декабря 2009

У меня есть следующий код для создания редактора на месте:

new Ajax.InPlaceEditor('artifact_pretty_display_date_110_in_place_editor', '/artifacts/set_artifact_pretty_display_date/110', {evalScripts:true})

Ответ выглядит хорошо после того, как я изменил дату:

Element.update("artifact_pretty_display_date_110_in_place_editor", "12/06/2008");
Element.update("artifact_visible_display_date_110", "12/06/2008");
Element.update("flash_message", "<div class=\"flash_message\" style=\"display:block;\">\r\n            The Document's date was changed to 12/08/2008. \r\n</div>");
Element.update("flash_error", "<div class=\"flash_error\" style=\"display:none;\">\r\n\r\n \r\n</div>\r\n");

Единственная проблема в том, что мое поле редактора на месте показывает этот ответ, оно не получает eval'd. Это похоже на то, что установка evalScripts в true ничего не делает. Кто-нибудь знает, почему это происходит?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 22 декабря 2009

Это оказалось проблемой для InPlaceEditor Scriptaculous, использующего Ajax Updater, в отличие от объекта Ajax Request, а также с использованием page.replace_html. Если вы столкнетесь с этой ошибкой, возможно, стоит открыть open control.js из scriptaculous и убедиться, что объект Ajax Request используется в методе handleFormSubmission. Если нет, вам может потребоваться установить для htmlResponse значение true или, в зависимости от версии scriptaculous, вам может потребоваться установить какой-либо другой флаг. Именно в этом и заключалась моя проблема.

0 голосов
/ 22 декабря 2009

Глядя на документы , не похоже, что evalScripts является допустимым вариантом в этом контексте, я думаю, что ваш код должен выглядеть так:

new Ajax.InPlaceEditor('artifact_pretty_display_date_110_in_place_editor', '/artifacts/set_artifact_pretty_display_date/110', ajaxOptions:{evalScripts:true})
...