Rails 3 - Javascript: подтверждение не работает для link_to и button_to с помощью: method =>: delete

В моем файле index.html.erb я пытаюсь отобразить заголовок для моего объекта ( "листинг" ) и обычные "шоу", "редактировать" и "уничтожать" ссылки и/или кнопки. С помощью метода: method = > : delete и: confirm = > "вы уверены?", Ни link_to, ни button_to не представит окно подтверждения javascript. Вот мой index.html.erb:

<h2><a href="#" onclick="alert('Hello world!'); return false;">Click Here for a Javascript test</a></h2>   
<table>  
  <tr>
    <th>List Title</th>
    <th></th>
    <th></th>
    <th></th>
  </tr>    
<% @listings.each do |listing| %>
  <tr>
    <td><%= listing.title %></td>
    <td><%= button_to 'Show', listing %></td>
    <td><%= button_to 'Edit', edit_listing_path(listing) %></td>
    <td><%= button_to( 'Destroy', listing, 
                       :confirm => 'Are you sure?', :method => :delete)%> </td>
    <td><%= link_to "Destroy", listing, :confirm => "Are you sure?", :method => :delete %> </td>
  </tr>
<% end %>
</table>

Ссылка на подтверждение приветствия "Hello World" в верхней части списка работает отлично, поэтому я уверен, что ненавязчивый javascript отлично работает для моего приложения. (Я также подтвердил, что у меня есть необходимые javascript_include_tag: defaults и csrf_meta_tag находятся в моем шаблоне приложения.) Документация Rails подтверждает, что аргументы, которые я использую, поддерживаются (url,: confirm,: method). Однако ни button_to, ни link_to не генерируют предупреждение JS, обозначенное: confirm. Еще один бит странности, с теми же аргументами, button_to удалит запись, а link_to - нет.

Любые предложения о том, что следует исследовать, чтобы исправить это, будут оценены.

Спасибо!

Ответ 1

Я столкнулся с этой точной проблемой раньше, когда я случайно включил как Prototype, так и jQuery. Проверьте загружаемые ресурсы, чтобы убедиться, что вы каким-то образом не загружаете обе фреймворки.

Ответ 2

AFAIK эта проблема возникает из-за опции link_to, которая вызывает проблемы, когда ее метод - это нечто иное, чем GET (метод http), поэтому я использую параметр button_to, который отлично работает

Ответ 3

Я столкнулся с одной и той же проблемой, с новыми обновленными Rails, и решил ее, переместив параметр :confirm в html_options часть аргументов link_to, например:

<%= link_to (t '.scenarios.open'), { :controller => 'scenarios', :action => 'show', :name => scenario.name }, :confirm => 'really?' %>

Действительно, нужен драгоценный камень jquery-rails, но он уже был здесь и правильно связан.

Ответ 4

Проверьте, загружен ли ненавязчивый скриптовый скрипт Rails для jQuery (jquery_ujs) на ваш сайт, тогда вам не нужно беспокоиться о сторонних javascripts:

// app/assets/javascript/application.js    
//= require jquery_ujs