Rails 3 link_to (: method =>: delete) не работает - PullRequest
11 голосов
/ 03 декабря 2010

У меня проблема с глаголами в Rails ...

просмотр страницы для ресурса (Dog), который has_many (Fleas). В 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 ... и понять, что происходит

Ответы [ 6 ]

25 голосов
/ 03 декабря 2010

Rails 3 теперь использует ненавязчивый JavaScript. В Rails 2.3 erb просто вставлял весь этот грязный javascript прямо в саму ссылку в событии onClick. Теперь JavaScript был удален из ссылки и во внешние файлы js. Убедитесь, что у вас есть это в вашем макете:

<%= javascript_include_tag :all %>

Если у вас это есть, могут быть более глубокие проблемы, препятствующие запуску вашего javascript, но это место для начала. Дайте мне знать, как это получается.

17 голосов
/ 26 апреля 2013

Привет, вы также можете попробовать это:

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" %>
12 голосов
/ 27 февраля 2012

Проверьте свои <%= javascript_include_tag %> в application.html.erb

Возможно, вам не хватает "приложения" js

Это должно выглядеть как минимум

<%= javascript_include_tag "application" %>
2 голосов
/ 17 декабря 2013

Здесь я не использую 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();"

Теперь работает нормально.

1 голос
/ 07 октября 2013

проверить, если application.html.erb

<%= javascript_include_tag :application %>

не как:

<%= javascript_include_tag :default %>
0 голосов
/ 03 декабря 2010

Похоже, ваш метод link_to не совсем правильный.Попробуйте использовать этот код вместо:

  <%= link_to 'Kill Flea', [flea.dog, flea], :confirm => 'Sure?', :method => :delete %>
...