在设计生成的模型中删除用户

时间:2014-01-17 18:13:32

标签: ruby-on-rails devise

首先,我是rails的新手。我使用devise gem进行用户身份验证。现在我想为管理员提供一种删除其他用户的方法。用户的id没有传递给我的destroy动作。这是我的代码

user_controller.rb

  class UsersController < ApplicationController

  def destroy
    User.find(params[:id]).destroy
    redirect_to dashboard_path
  end

end

dashboard.html.erb

<% if current_user.admin == true %>
  <% @users = User.all %>
  <% @users.each do |user| %>
    <%= user.email %>
    | <%= link_to "delete", destroy_path, method: :delete, data: { confirm: "Are you sure"} %><br>
  <% end %>
<% end %>

1 个答案:

答案 0 :(得分:0)

首先,您不应该直接在视图中分配实例变量。这是Controller的责任。所以,在上面的例子中,正确的做法是这样的:

# users_controller.rb

class UsersController < ApplicationController
  def dashboard
    @users = User.all
  end

  def destroy
    User.find(params[:id]).destroy
    redirect_to dashboard_path
  end
end

你的观点应该是这样的:

# dashboard.html.erb

<% if current_user.admin == true %>
   <% @users.each do |user| %>
     <%= user.email %>
     | <%= link_to "delete", user, method: :delete, data: { confirm: "Are you sure"} %><br>
  <% end %>
<% end %>

最后但并非最不重要= P确保你的routes.rb有这样的东西:

# routes.rb

delete "/users/:id" => "users#destroy", as: :user

当然,它只是一个基于你的问题的例子,但它应该像魅力= P