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

В моем файле index.html.erb я пытаюсь отобразить заголовок моего объекта ("листинг") и обычные ссылки и / или кнопки "показать", "изменить" и "уничтожить". С помощью:method =>:delete и: verify => "Вы уверены?", Ни 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>

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

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

Спасибо!

4 ответа

Решение

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

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

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

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

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

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

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

Другие вопросы по тегам