Метод контроллера Rails для сохранения модели и закрытия всплывающего окна - PullRequest
0 голосов
/ 30 октября 2009

У меня есть веб-приложение, которое позволяет пользователям редактировать данные модели через всплывающее окно. Когда форма всплывающего окна заполнена, пользователь нажимает кнопку «Сохранить», окно закрывается, и исходная страница перезагружается, чтобы показать все обновления, произошедшие с данными.

Моя техника работает только иногда. Я не могу понять, почему это работает один раз, а почему нет.

В форме моего всплывающего окна у меня есть метод отправки:

<%= submit_tag("Update Invoice", {:onclick=>"refreshParent()"}) %>

Таким образом, Javascript идеально выполняется одновременно с отправкой формы контроллеру. Вот функция Javascript refreshParent ():

function refreshParent(id) {
    window.opener.location.reload();
    window.close();
}

Теперь, метод, вызываемый моей формой (в данном случае «update»), не имеет вызова метода redirect_to, но даже когда я делаю (скажем, в исходном представлении, индекс), это не имеет значения .

В root кажется, что мой метод контроллера не запускается при отправке формы. Иногда. Я могу отправить одни и те же данные формы несколько раз, и это будет работать в третий раз. Или иногда это работает сразу. Это совершенно случайно.

Что я могу сделать, чтобы мои методы контроллера срабатывали при закрытии всплывающего окна?

Спасибо, Аарон.

Ответы [ 2 ]

0 голосов
/ 31 октября 2009

Если я правильно понимаю, вы хотите, чтобы форма на странице публиковалась, но вы также хотите, чтобы окно, на котором была форма, закрывалось. К сожалению, так, как вы настроили его сейчас, нет способа проверить, что форма успешно размещена перед закрытием окна. Таким образом, если окно закрывается до публикации формы, запрос может не завершиться, и данные никогда не будут отправлены вашему контроллеру.

Лучшим решением было бы опубликовать форму с помощью Ajax и закрыть окно после успешного выполнения запроса Ajax.

Библиотека, подобная jQuery , упрощает использование Ajax, поэтому на самом деле нет причин не использовать его.

0 голосов
/ 31 октября 2009

Я думаю, вы столкнулись с некоторой комбинацией проблем с производительностью JavaScript и задержками в сети. На самом деле запросы отображаются на сервере?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...