Я пытаюсь использовать Devise для удаления пользователей. У меня есть список пользователей, каждый из которых имеет свой адрес электронной почты и ссылку «удалить» рядом с ними, видимую только мне, администратору. Я хочу иметь возможность просто щелкнуть ссылку удаления, чтобы навсегда удалить пользователя. Следующий код удаляет меня, администратор!
<%= link_to "delete", user_registration_path, :method => :delete, :confirm => "You sure?" %>
Я думаю, вам нужно передать: id пользователя, которого вы хотите удалить, в какой-либо метод destroy_user:
@user.find(params[:id]).destroy_user
Но как это сделать, когда вам нужно отправить запрос DELETE в user_registration_path ??
------ РЕДАКТИРОВАТЬ --------
ОК, я добавил этот метод в свой пользовательский контроллер:
def destroy
User.find(params[:id]).destroy
flash[:success] = "User destroyed."
redirect_to users_path
end
Итак, мне нужно сказать контроллеру пользователей, чтобы он вызывал метод destroy, когда он получает запрос DELETE. Как вы делаете это в rout.rb? В настоящее время у меня есть:
match '/users/:id', :to => 'users#show', :as => :user
match '/all_users', :to => 'users#index', :as => :all_users
Мне нужно что-то вроде:
match 'delete_user', :to => 'users#destroy', :as => :destroy_user, :method => :delete
но это не работает. А что должно идти по ссылке?
<%= link_to "delete", destroy_user, :method => :delete, :confirm => "You sure?" %>
Другими словами, что вы должны поместить в файл route.rb, чтобы различать разные типы запросов (GET, DELETE и т. Д.) Для одного и того же URL-адреса?