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

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

2 голосов
/ 14 февраля 2011

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

1 голос
/ 28 января 2014

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

// app/assets/javascript/application.js    
//= require jquery_ujs
1 голос
/ 23 января 2013

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

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

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

1 голос
/ 06 апреля 2011

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

...