我正在尝试列出正在使用我的应用程序的所有用户,并仅删除我想要的用户。但每当我尝试删除我的用户时,它都会通过localhost:3000/users.2
而不是localhost:3000/users/2
。
并且它不会删除所选用户,而是删除当前用户。但我不想删除当前用户。
我没有修改任何控制器或模型,只是在我的视图中使用了以下代码来列出和删除用户。
<table class="table table-hover table-striped">
<thead>
<tr class="bg-primary">
<th>S.N.</th>
<th>Name</th>
<th>Email</th>
<th>Created at</th>
<th>Action</th>
</tr>
</thead>
<% @users.each_with_index do |u, i| %>
<% if current_user.email != u.email %>
<tbody>
<tr>
<td><%= (@page.to_i - 1) * @perpage + i+1 %></td>
<td>
<% if u.first_name.present?%>
<%= u.first_name.slice(0, 1).capitalize + u.first_name.slice(1..-1) %>
<% end %>
<% if u.middle_name.present? %>
<%= u.middle_name.slice(0, 1).capitalize + u.middle_name.slice(1..-1) %>
<% end %>
<% if u.last_name.present? %>
<%= u.last_name.slice(0, 1).capitalize + u.last_name.slice(1..-1) %>
<% end %>
</td>
<td>
<%= u.email %>
</td>
<td>
<%= u.created_at %>
</td>
<td>
<a data-confirm="Are you sure to delete" rel="nofollow" data-method="delete" href="<%= user_registration_path(u)%>">
<span class="fa-delete">
<i class="fa fa-trash fa-th-large fa-2x"></i>
</span>
</a>
</td>
</tr>
</tbody>
<% end %>
<% end %>
</table>
我尝试删除除current_user 以外的其他用户时出现错误
答案 0 :(得分:1)
只需检查当前用户<% unless u == current_user %>
是否有删除链接
您可以向current_user显示其他数据
<% unless u == current_user %>
<a data-confirm="Are you sure to delete" rel="nofollow" data-method="delete" href="<%= user_registration_path(u)%>">
<span class="fa-delete">
<i class="fa fa-trash fa-th-large fa-2x"></i>
</span>
</a>
<% end %>
如果您不想显示任何数据
替换
<% if current_user.email != u.email %>
与
<% unless current_user == u %>
答案 1 :(得分:0)
如果你只是想删除一个用户,我认为你已经有了它的逻辑,只需更改a
辅助方法的link_to
标记:
<% unless u == current_user %>
<%= link_to user_registration_path(u), method: :delete, confirm: "Are you sure to delete?", rel: "nofollow" do %>
<span class="fa-delete">
<i class="fa fa-trash fa-th-large fa-2x"></i>
</span>
<% end %>
<% end %>
这种方式更干净,更有条理
答案 2 :(得分:0)
您尝试删除用户的路线附带Devise,仅用于删除当前用户。 要删除任何用户,您必须创建一个在其中具有销毁操作的新控制器。之后,将此控制器/操作添加到您的路线,然后您将能够使用新的路线删除您想要的任何用户。
控制器示例:
class UsersController < ApplicationController
def destroy
user = User.find(params[:id])
if current_user != user
if user.destroy
flash[:success] = "Successfully deleted"
else
flash[:error] = "Error"
end
end
redirect_to your_users_path
end
end
在您的路线中:
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?" } %>