У меня есть форма, которая делает запрос Ajax POST для вставки виджета в мою базу данных. В форме у меня есть поле выбора, где вы можете выбрать из виджетов. После того, как вставка БД сделана, я должен обновить поле выбора. Я на самом деле просто заменить всю форму на данный момент.
Поскольку в окне выбора есть виджеты, у меня должна быть копия объектов в javascript. Я называю это var widget_objects. Когда форма заменяется во время события обновления, я печатаю переменную ruby <% = @widget_objects%> и вижу вновь созданный объект. Однако, когда я пытаюсь получить доступ к javascript var "widget_objects" в событии onComplete, новый объект не существует. Я создаю javascript widget_objects с этой строкой кода на странице:
widget_objects = <% = @widget_objects%>;
Так что кажется, что строка кода выше не выполняется перед событием onComplete Ajax-запроса. Тем не менее, я думал, что событие onComplete происходит после загрузки страницы, и я предполагаю, что после того, как скрипты будут eval'd .... какие-нибудь идеи?
<%= submit_to_remote(
"save_widget",
"Save Widget & Generate Embed Code",
{
:url => widgets_url(:user_id => @user.id),
:update => "widget_form",
:method => :POST,
:html => { :id => "save_widget_button",
:onclick => "this.value='Saving...'; this.disabled = 'true';",
:style => "width: 220px;"
},
:complete =>"
$('save_widget_button').disabled='';
$('save_widget_button').value='Save Widget & Generate Embed Code';
var last_id = $j('select#widget_id').children(':last').attr('value');
alert( widget_objects[last_id] );
",
:success => "reportMessage('success', request.headerJSON.success, 'save_widget_status'); $('band_form').reset();",
:failure => "reportMessage('failure', request.headerJSON.errors, 'save_widget_status');"
}) %>