Создайте пользовательское диалоговое окно подтверждения jquery при нажатии на link_to с методом delete в rails - PullRequest
2 голосов
/ 10 июня 2011

как дела? Я сталкиваюсь со следующей проблемой в рельсах 2.3.

В представлении я отрисовываю привязку с помощью помощника link_to с методом: delete, т.е. :

link_to "DELETE!", resource_path(@resource), :method => :delete

Это прекрасно работает! Но я хочу охватить диалог подтверждения, прежде чем приступить к действию уничтожения. Я мог бы сделать это с помощью встроенной опции подтверждения:

link_to "DELETE!", resource_path(@resource), {:method => :delete, :confirm=> "Are you sure?"

Но мне не нравится этот стиль диалога.

Мне нужен пользовательский диалог, сгенерированный jquery dialog . Таким образом, я связываю событие клика с этой ссылкой, которое охватывает желаемый диалог подтверждения.

Большая проблема заключается в том, что когда пользователь щелкает ссылку, появляется диалоговое окно подтверждения, но запрос на удаление выполняется независимо от нажатия кнопки OK или ОТМЕНА. Проверка предоставленной ссылки Я помню, что rails добавляет событие onclick поверх этой ссылки, которое генерирует соответствующую скрытую форму с помощью _method: delete, etc, etc и т. Д.

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

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

Спасибо

1 Ответ

2 голосов
/ 10 июня 2011

Вы должны вернуть значение подтверждения (true / false) для события щелчка по ссылке. Если щелчок возвращает ложь, браузер не будет переходить по ссылке.

Взято из этого ответа на SO :

:onclick => "return confirm( message )"

Это не диалоговое окно jQuery, но оно даст вам правильную функциональность.

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