资源删除方法不适用于 Devise
Resources delete method not working with Devise
我正在使用设计 gem 进行身份验证。对于管理员用户,我正在尝试创建一个页面,他将在其中看到所有用户的列表并能够删除它们。因为设计不提供删除操作,所以我创建了一个控制器,我在其中创建了销毁操作。
控制器:
def destroy
User.find(params[:id]).destroy
flash[:success] = "User destroyed."
redirect_to("/devise")
end
视图很简单,它只是列出所有用户并在他们旁边发布删除 link。
<% @users.each do |user| %>
<%= user.email %> <%= link_to 'Delete', :controller => :devise, :action => :destroy, :id => (user[:id]), method: :delete, data: { confirm: "Are you sure you want to delete this user permanently?" } %>
<% end %>
直到此时它才有效 - 页面显示所有用户和删除 link。但是,当我尝试删除随机用户时,它只是在新 window 中打开它们,而不是删除它们。
我的路线如下:
Rails.application.routes.draw do
devise_for :admins
devise_for :users
resources :devise
resources :centres
resources :users
#match '/users/:id', :to => 'devise#show', :as => :user, :via => :get
match '/users/:id', :to => 'devise#destroy', :as => :destroy_user, :via => :delete
root 'welcome#index'
get '/index', to: 'welcome#index'
get '/about', to: 'welcome#about'
get '/help', to: 'welcome#help'
end
我需要使删除功能正常工作。谢谢。
据我所知,设备不处理销毁操作。您应该创建一个自定义控制器并提供销毁操作。就我而言,我创建了一个 users_controller
users_controller:
def destroy
@user.destroy
respond_to do |format|
format.html { redirect_to users_url }
format.json { head :ok }
end
end
html.erb:
<%= link_to 'Delete', user, method: :delete, data: { confirm: 'Are you sure?' } %>
routes.rb:
match '/users/:id', :to => 'users#destroy', :as => :destroy_user, :via => :delete
这是我发布的问题的解决方案:
控制:
def destroy
User.find(params[:id]).destroy
flash[:success] = "User destroyed."
redirect_to("/users")
end
查看:
<%= link_to "delete", user, method: :delete,
data: { confirm: "Are you sure you want to permanently delete this user?" } %>
路线:
match '/users/:id', :to => 'users#destroy', :as => :destroy_user, :via => :delete
我正在使用设计 gem 进行身份验证。对于管理员用户,我正在尝试创建一个页面,他将在其中看到所有用户的列表并能够删除它们。因为设计不提供删除操作,所以我创建了一个控制器,我在其中创建了销毁操作。
控制器:
def destroy
User.find(params[:id]).destroy
flash[:success] = "User destroyed."
redirect_to("/devise")
end
视图很简单,它只是列出所有用户并在他们旁边发布删除 link。
<% @users.each do |user| %>
<%= user.email %> <%= link_to 'Delete', :controller => :devise, :action => :destroy, :id => (user[:id]), method: :delete, data: { confirm: "Are you sure you want to delete this user permanently?" } %>
<% end %>
直到此时它才有效 - 页面显示所有用户和删除 link。但是,当我尝试删除随机用户时,它只是在新 window 中打开它们,而不是删除它们。
我的路线如下:
Rails.application.routes.draw do
devise_for :admins
devise_for :users
resources :devise
resources :centres
resources :users
#match '/users/:id', :to => 'devise#show', :as => :user, :via => :get
match '/users/:id', :to => 'devise#destroy', :as => :destroy_user, :via => :delete
root 'welcome#index'
get '/index', to: 'welcome#index'
get '/about', to: 'welcome#about'
get '/help', to: 'welcome#help'
end
我需要使删除功能正常工作。谢谢。
据我所知,设备不处理销毁操作。您应该创建一个自定义控制器并提供销毁操作。就我而言,我创建了一个 users_controller
users_controller:
def destroy
@user.destroy
respond_to do |format|
format.html { redirect_to users_url }
format.json { head :ok }
end
end
html.erb:
<%= link_to 'Delete', user, method: :delete, data: { confirm: 'Are you sure?' } %>
routes.rb:
match '/users/:id', :to => 'users#destroy', :as => :destroy_user, :via => :delete
这是我发布的问题的解决方案:
控制:
def destroy
User.find(params[:id]).destroy
flash[:success] = "User destroyed."
redirect_to("/users")
end
查看:
<%= link_to "delete", user, method: :delete,
data: { confirm: "Are you sure you want to permanently delete this user?" } %>
路线:
match '/users/:id', :to => 'users#destroy', :as => :destroy_user, :via => :delete