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

对于我的应用程序,我有用户帐户,人们可以注册。 我使用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 

用户/ index.html.erb

 
USERS DIRECTORY

用户/ _user.html.erb

 

的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 

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

在你的路线:

  match 'users/:id' => 'users#destroy', :via => :delete, :as => :admin_destroy_user 

然后在创建链接时:

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

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

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

我认为你有你的routes.rb: resources :users

问题是您在单击时未传递要删除的用户:

用户/ _user.html.erb

 <%= link_to "Destroy", user, method: :delete, data: { confirm: "You sure?" } %> 

在第二个参数中看到我添加了user而不是user_url

users_controller.rb

  def destroy @user = User.find(params[:id]) if @user.destroy redirect_to root_url, notice: "User deleted." end end 

在控制器中我删除了一个@ user.destroy。 你打了两次电话。

希望能帮助到你!

或者从rails c你可以做这样的事情,其中​​“x”是用户ID。

 user = User.where(id: x) user.destroy(1)