2010-12-15 1 views
2

Я делает Ruby On Rails 3.0.3 приложение с JQuery 1.4.4 и JQuery UJS rails.js (https://github.com/rails/jquery-ujs)Standart Удалить ссылку не работает с Rails3 + JQuery UJS

Я подмости генерируемый модель/вид/контроллер - Документ, в котором я должен удалить ссылку на приложение/просмотров/документы/index.html.haml файла:

link_to "delete", document, :confirm => "Are you sure?", :method => :delete

Это создает этот HTML:

<a href="/documents/1" data-confirm="Are you sure?" data-method="delete" rel="nofollow">Destroy</a>

Что кажется очень ОК.

Когда я нажимаю эту «Уничтожить» ссылку, а затем я вижу браузер подтвердить() и когда я нажимаю Отмена я ожидаю не произойдет ничего.

НО

Удаление функциональности происходит и документ удаляется.

Имеет ли кто-нибудь такую ​​же проблему, или я делаю что-то неправильно?

В настоящее время я выкопал этот далеко:

Я смотрел на jquery-ujs rails.js и есть два .live() событий, подключенные к той же якорем:

1) $ ('а [data-confirm], input [data-confirm] '). live (' click ', function() {...}

2) $ (' a [data-method]: not ([data- удаленный]) '). live (' click ', function (e) {...}

Первый концерт() выполняет return false; который, как я понимаю, должен тормозить всю цепочку выполнения, но это не так. Второй live() по-прежнему выполняется, и этот второй live() - это форма, сгенерированная и отправленная для уничтожения действия.

ответ

2

Вы также должны убедиться, что ваша ссылка на rails.js после ваших Jquery ссылки. У меня было <% = javascript_include_tags "rails", "jquery" ....%> и для этого нужны рельсы, чтобы быть в конце. rails.js использует многие функции, созданные jquery, поэтому их нужно инициализировать до вызова рельсов, чтобы их можно было использовать.

1

Я еще не могу выдвинуть, но моя проблема была такой же, как у Дэвида выше. Убедитесь, что rails.js приходит ПОСЛЕ ваших ссылок jquery. Это и то, что у вас есть тег CSRF в файле application.html.erb также вот так:

application.html.Еврорадио

<head> 
<title><%= title %></title> 
<%= render 'layouts/stylesheets' %> 
<script src="http://jquery.com/src/jquery-latest.js"></script> 
<%= javascript_include_tag :defaults %> 
<%= javascript_include_tag :all %> 
<%= csrf_meta_tag %> 

Более подробная информация о CSRF здесь: http://www.themodestrubyist.com/2010/02/24/rails-3-ujs-and-csrf-meta-tags/

+0

Yeap, что есть истина. Важна последовательность включения. Я столкнулся с подобными проблемами. – oskarae 2011-07-07 07:38:33

0

Я имел подобную ошибку.

Прежде всего вам нужно использовать button_to для получения POST-действия, необходимого для удаления.

Во-вторых, вам необходимо убедиться, что версия jquery, необходимая для jquery-ujs (https://github.com/rails/jquery-ujs/raw/master/src/rails.js), - это версия, которую вы используете с помощью. Для последней версии jquery-ujs требуется jquery-1.6.0 или новее. Я использовал более старую версию.

0

При использовании Javascript для создания HTML для удаления ссылки, не забудьте данные дистанционных = «истинный» атрибута в дополнении к данным -методу = «удалить»