method: =>: удалить не работает и: опция подтверждения игнорируется - PullRequest
8 голосов
/ 10 декабря 2008

Вернувшись к старому проекту Rails, я обнаружил, что ни одна из ссылок на удаление / удаление не работает, и нажатие кнопки отмены во всплывающем окне подтверждения все равно отправит ссылку.

Пример моего кода:

<%= link_to 'Delete', admin_user_path(@user), :confirm => 'Are you sure?', :method => :delete %>

Ответы [ 7 ]

3 голосов
/ 20 января 2011

Эта проблема возникает, если вы используете jQuery, а если нет, то ищите что-то вроде этого:

В моем случае я использовал:

javascript_include_tag: все%>

И это не работало, но когда я поставил это как:

javascript_include_tag: значения по умолчанию%>

Это сработало!

0 голосов
/ 21 июня 2016

Попробуйте использовать

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.0.0/jquery.min.js"></script> 

до

<%= javascript_include_tag "application" %> 

в вашем макете, а также удалить

//= require jquery

строка в вашем application.js .

Это был случай для меня. Понятия не имею, почему это не сработало с оригинальным файлом raqu jquery.js

0 голосов
/ 29 апреля 2015

Вот быстрое решение - просто замените данные на подтверждение-подтверждение

<%= link_to 'Delete', admin_user_path(@user), 'data-confirm' => 'Are you sure?', :method => :delete %>
0 голосов
/ 06 июля 2013

В большинстве случаев это происходит потому, что вы вызываете код jQuery перед его загрузкой или перед существованием элементов на странице.

Для борьбы с этим используйте что-то вроде:

$(document).ready(function () {
  $('*[data-confirm]').click(function(){
    return confirm($(this).attr('data-confirm'));
  });
});
0 голосов
/ 26 апреля 2013

Вот способ использования jQuery для одинакового подтверждения всех кнопок удаления:

;(function($){
  $(function(){
    $('input.destroy').click(function(){
      return confirm($(this).attr('data-confirm'));
    });
  });
})(jQuery);

Вы просто должны быть уверены, что добавили class = "destroy" к каждому элементу, например ::

= button_to 'Delete', polygon, :method => :delete, :class => "destroy", :confirm => "Are you sure?"
0 голосов
/ 17 февраля 2011

В моем случае это была проблема со старой комбинацией prototype и rails.js. Ответ на этот вопрос привел меня к следующему: : опция подтверждения в Rails игнорируется при использовании Rails 3 и jQuery UJS

Итак, я скачал последний rails.js с https://github.com/rails/prototype-ujs/raw/master/src/rails.js и последний прототип с https://ajax.googleapis.com/ajax/libs/prototype/1.7.0.0/prototype.js.

Теперь все, кажется, работает как ожидалось.

0 голосов
/ 06 июля 2010

Крис, привет. У меня такая же проблема. Я удалил Firebug и проблема осталась. Я прочитал от другого пользователя, что ему нужно перезапустить Firefox, но это тоже не сработало. Некоторые говорили, что попробуйте Safari, но это тоже не сработало.

В конце концов, это было новичком:

У меня есть помощники для вставки значка, например edit_icon, который возвращает симпатичный тег изображения для значка редактирования и т. Д.

Одним из таких вспомогательных методов был метод delete_icon, где я написал так:

def delete_icon (object = nil) link_to image_tag ('icons / delete.jpg',: width => 20,: border => 0), object,: verify => 'Вы уверены?',: method =>: delete конец

Это была (хорошая) попытка DRY, но лучше было бы, если бы у меня был def def_icon (object), а не object = nil, потому что, когда я вызываю его, становится понятнее, что я должен передать его объект уничтожить. Вызов того же метода с объектом, который нужно удалить, работал для меня.

Вкратце: дважды проверьте ваши вспомогательные методы, если вы пытаетесь СУХОЙ.

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