Rails - 如何破坏在Devise下创建的用户?

spl*_*spl 14 ruby-on-rails destroy

对于我的应用程序,我有用户帐户,人们可以注册.我使用devisegem进行设置.

我还有一个用户页面,其中列出了注册到该站点的所有用户以及destroy链接.我希望我的管理员能够删除用户并将其重定向到此用户列表页面.但是,当我单击链接以销毁特定用户时,它只会重定向到用户配置文件页面,并且不会从数据库中删除该用户.

有人知道为什么吗?

**更新:根据建议更新了以下代码,现在可以使用.

users_controller.rb

  def destroy
    @user = User.find(params[:id])
    @user.destroy

    if @user.destroy
        redirect_to root_url, notice: "User deleted."
    end
  end
Run Code Online (Sandbox Code Playgroud)

用户/ index.html.erb

<div class = "container">
    <div id="usersview">
    <b>USERS DIRECTORY</b>
    <%= render @users %>
</div>

<center>
    <%= will_paginate @users %>
</center>
</div>
Run Code Online (Sandbox Code Playgroud)

用户/ _user.html.erb

<div class="comments">
  <%= link_to user.name, user %>
  <% if current_user.try(:admin?) && !current_user?(user) %>
       <%= link_to "Destroy", admin_destroy_user_path(user), method: :delete, data: { confirm: "You sure?" } %>
  <% end %>
</div>
Run Code Online (Sandbox Code Playgroud)

的routes.rb

devise_for :users    
match 'users/:id' => 'users#destroy', :via => :delete, :as => :admin_destroy_user
match 'users/:id' => 'users#show', as: :user
resources :users
Run Code Online (Sandbox Code Playgroud)

Ale*_*and 14

Devise不提供开箱即用的功能.您已创建自己的销毁操作,但您还必须创建指向该操作的自定义路径.

在你的路线:

 match 'users/:id' => 'users#destroy', :via => :delete, :as => :admin_destroy_user
Run Code Online (Sandbox Code Playgroud)

然后在创建链接时:

<%= link_to "Destroy", admin_destroy_user_path(user), method: :delete, data: { confirm: "You sure?" } %>
Run Code Online (Sandbox Code Playgroud)


Ste*_*uet 5

根据设计 4.1 rake 路由和视图,使用以下将帮助您在以用户身份登录后删除帐户。

<%= link_to "Cancel my account", registration_path(current_user), data: { confirm: "Are you sure?" }, method: :delete %>
Run Code Online (Sandbox Code Playgroud)