2013-03-25 2 views
0

Подтверждающее сообщение появляется, если вы уверены, что хотите удалить, но тогда игрок остается там.Rails удалить игрока не удаляется

Вот мой уничтожить метод в контроллере

def destroy 
    Player.find(params[:id]).destroy 
    redirect_to :action => 'index' 
    end 

Вот моя ссылка Удалить

<ul> 
<% @players.each do |p| %> 
<li> 
    <%= link_to p.name, {:action => 'show', :id => p.id} -%> email:<%= p.email %> 
    <%= link_to 'edit', {:action => "edit", 
     :id => p.id} %> 
    <%= link_to "Delete", {:action => 'destroy' ,:id => p.id}, :confirm => "Are you sure you want to delete this item?" %></li> 
<% end %> 
</ul> 
<p><%= link_to "Add new player", {:action => 'new' }%></p> 

Вот журнал

Started GET "/players" for 127.0.0.1 at 2013-03-25 15:30:55 +0200 
Processing by PlayersController#index as HTML 
    Player Load (0.1ms) SELECT "players".* FROM "players" 
    Rendered players/index.html.erb within layouts/application (1.0ms) 
Completed 200 OK in 46ms (Views: 45.3ms | ActiveRecord: 0.1ms) 
[2013-03-25 15:30:55] WARN Could not determine content-length of response body. Set content-length of the response or set Response#chunked = true 
+0

попробовать это <% = link_to "Удалить", {: действие => ' destroy ',: method =>' delete ',: id => c.id},: confirm => "Вы действительно хотите удалить этот элемент?" %> –

ответ

2

вы должны указать method: 'delete', так как ссылки по умолчанию method: 'get'.

рельсы маршрутизатор будет видеть, что delete и действовать accordinly

+0

Что мне следует поместить в мой метод удаления? – user1898829

+0

нет, вы неправильно поняли .. сделайте что-то вроде '<% = link_to" Удалить ", {: action => 'destroy',: method => 'delete',: id => c.id}, : confirm => "Вы уверены, что хотите удалить этот элемент?" %> ' –

+0

это сделает link_to выполнить запрос HTTP DELETE, который маршрутизатор рельсов распознает и направит на правильное действие в контроллере.Без этого он выполнит запрос HTTP GET, который, скорее всего, будет перенаправлен на: show action –

0

Ваш игрок называется detroy. Вы не получаете синтаксическую ошибку? Разве вы не в режиме разработки?

def destroy 
    Player.find(params[:id]).destroy 
    redirect_to :action => 'index' 
end 

Исправить свой метод.

+0

Нет. Я не получал синтаксическую ошибку, которая, вероятно, поэтому я ее не забрал – user1898829

0

Его хорошо форматировать link_to для кнопки удаления следующим образом.

<%= link_to "Delete", path_for_delete_action(c), :method => :delete, 
    :confirm => "Are you sure you want to delete this item?" %> 

или просто указать контроллер и метод в текущей реализации.

0

2 вопрос:

  • опечатка destroy в контроллере.
  • Вам нужно добавить method: :delete к link_to
0

Укажите метод HTTP, Вам не нужно определить метод удаления.

Это метод HTTP DELETE, не являющийся рубиновым методом.

<%= link_to "Delete", {:action => 'destroy', :id => c.id, :method => :delete}, 
     :confirm => "Are you sure you want to delete this item?" %> 

Я не использую этот конкретный синтаксис, так что если это не сработает, попробуйте это один:

<%= link_to "Delete", player_url(c), :method => :delete, 
     :confirm => "Are you sure you want to delete this item?" %> 
Смежные вопросы