簡體   English   中英

資源刪除方法不適用於Devise

[英]Resources delete method not working with Devise

我正在使用devise gem進行身份驗證。 對於管理員用戶,我正在嘗試創建一個頁面,在該頁面上,他將看到所有用戶的列表,並將其刪除。 由於devise不提供刪除操作,因此我在創建destroy動作的地方創建了一個控制器。

控制器:

  def destroy
    User.find(params[:id]).destroy
    flash[:success] = "User destroyed."
    redirect_to("/devise")
  end

該視圖很簡單,它僅列出所有用戶並在其旁邊發布刪除鏈接。

<% @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 %>

到目前為止,它仍然有效-該頁面還顯示所有用戶以及刪除鏈接。 但是,當我嘗試刪除隨機用戶時,它只是在新窗口中打開它們而不是刪除它們。

我的路線如下:

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

我需要使刪除功能起作用。 謝謝。

這是我發布的問題的解決方案:

受控:

  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

據我所知,設備無法處理破壞動作。 您應該創建一個自定義控制器並提供銷毀操作。 就我而言,我創建了一個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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM