Rails 3 link_to (: method =>: delete) не работает
У меня есть проблема с моими глаголами в Rails...
просмотр страницы ресурса (Dog), который has_many (Блохи). Вложенный в собаку show.html.haml
- это вызов render @dog.fleas
, который автоматически (?) Находит и использует шаблон в "fleas/_flea.html.haml", чтобы перечислить каждую блоху, связанную с указанной собакой.
отображается правильно. гмм! Теперь, рядом с каждой блохой, я добавил ссылку "Убить блоху", которая идет на URL: //localhost:3000/dogs/1/fleas/7
. Что генерируется:
= link_to("Kill Flea", [ flea.dog, flea ], :method => :delete, :confirm => "Sure? A bunny will die")
но каждый раз, когда эта ссылка нажата, нет подтверждения... и она отображает страницу блохи show.html
. он как будто использует GET на /dogs/1/fleas/7
вместо DELETE?!?
ps- не беспокоился о том, что пауки и роботы удаляют вещи в моей базе данных... Я просто пытаюсь изучить Rails.. и понимаю, что происходит
Ответы
Ответ 1
Rails 3 теперь использует ненавязчивый javascript. В Rails 2.3 erb просто запустил весь этот грязный javascript прямо в саму ссылку в событии onClick. Теперь javascript был перемещен из ссылки и во внешние js файлы. Удостоверьтесь, что у вас это в вашем макете:
<%= javascript_include_tag :all %>
Если у вас есть это, могут возникнуть проблемы с тем, чтобы ваш javascript не запускался, но это место для начала. Дайте мне знать, как это получается.
Ответ 2
Привет, вы также можете попробовать следующее:
application.html.erb:
<%= javascript_include_tag 'jquery_ujs' %>
OR
<%= javascript_include_tag "http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js", "jquery.rails.js" %>
Ответ 3
Проверьте <%= javascript_include_tag %>
в application.html.erb
Возможно, вам не хватает "приложения" js
Он должен выглядеть как
<%= javascript_include_tag "application" %>
Ответ 4
Здесь я не использую javascript_include_tag: all,: application и т.д.
Я использую свои собственные js файлы с другим пользовательским именем: javascript_include_tag: my_custom_file, и у меня также была эта проблема. И я не использую '= require jquery' в файле, но javascript/jquery работает. Я думаю, Rails включает jquery по умолчанию. Я сделал, что я изменил
link_to "Logout", destroy_user_session_path, :method => :delete
к
form_tag destroy_user_session_path, :method => :delete, :id => "logout_form"
link_to 'Logout', "#delete", :onclick => "$('#logout_form').submit();"
Теперь он работает отлично.
Ответ 5
проверить, если application.html.erb
<%= javascript_include_tag :application %>
не как:
<%= javascript_include_tag :default %>
Ответ 6
Похоже, ваш метод link_to не совсем прав. Вместо этого попробуйте использовать этот код:
<%= link_to 'Kill Flea', [flea.dog, flea], :confirm => 'Sure?', :method => :delete %>