Почему Rails "link_to" не работает для действия удаления? - PullRequest
9 голосов
/ 15 декабря 2010

В index.html.erb Я отображаю все продукты, и рядом с каждым продуктом у меня есть Edit и Delete действия:

<% @products.each do |product| %>
  ...
  <%= link_to("Edit", edit_product_path(product.id), :class => 'action') %>
  <%= link_to("Delete", product, :method => :delete, :class => 'action') %>
  ...
<% end %>

Ссылка Edit работает нормально. Однако ссылка Delete не работает. Я получаю следующую ошибку:

Unknown action
The action 'show' could not be found for ProductsController

Я думаю, это потому, что метод запроса GET, а не DELETE. Но я не знаю, почему это происходит, если я установил явно :method => :delete.

routes.rb довольно просто:

root :to => "products#index"
resources :products

У меня включен Javascript.

Пожалуйста, предложите.

Ответы [ 4 ]

11 голосов
/ 15 декабря 2010

У вас есть rails.js, указанное в javascript_include_tag?Это необходимо для работы ненавязчивого DELETE метода.Если вы используете jQuery, то для этого тоже есть решение .

5 голосов
/ 19 марта 2013

Не забудьте включить jquery_ujs в файл application.js:

//
//= require jquery
//= require jquery_ujs
// ...
2 голосов
/ 15 декабря 2010

Это должно быть product_path(product) вместо product в вашей ссылке для удаления.

0 голосов
/ 16 апреля 2011

У меня была та же проблема - фактически я изменил свое старое действие «удалить» на «уничтожить» - но забыл, если вы используете SSL .. (например, ssl_required: destroy)

...