2013-09-06 2 views
0

Есть ли способ скрыть ссылку удаления через действие вместо использования flash[:error]? администратор должен удалять кого-либо кроме себя, поэтому я прошу, когда он просматривает список пользователей, он не должен видеть ссылку на удаление для себя, и он должен видеть ссылку удаления для других пользователей, чтобы он мог их удалить.Скрыть ссылку на удаление через контроллер

def destroy 
    @user = User.find(params[:id]) 
    if current_user?(@user) 
     flash[:error] = "Admin suicide warning: Can't delete yourself." 
    else 
     @user.destroy 
     flash[:success] = 'User deleted' 
     redirect_to users_path 
    end 
    end 
+1

Ниже ответ хорошо, но вы должны ограничить это на обоих уровнях (Controller и View), а также. вы можете скрыть ссылку из представлений, но как-то ее можно отправить запрос на ваш метод destroy, поэтому полезно сохранить этот код. Спасибо –

+0

Теперь у меня есть как current_user == пользователь в представлении, так и контроллер, поэтому текущий пользователь не должен быть удален, если я не удалил current_user == пользователя из моего контроллера –

ответ

1

Я не уверен, что вы имеете в виду под «скрыть его через действие», но типичный способ сделать это было бы не показать ссылку удалить для этого пользователя в вашем представлении.

Что-то вроде:

<% unless current_user?(@user) %> 
(put delete link for @user here) 
<% end %> 
+0

Я обновил свой вопрос –

+0

правильно, поэтому моя интерпретация была правильной. Просто оберните условное соединение вокруг ссылки удаления, чтобы он не отображался для текущего пользователя. – sevenseacat

+0

'undefined method 'current_user?'' Я использую devise и в navbar у меня есть этот '<% if user_signed_in? %><% = current_user.user_name%> ... <% end %> ', который работает –

0

Это может помочь вам

<%= link_to 'Delete', user_path(@user), method: 'delete' if current_user.id != @user.id %> 
+0

'g. column do | пользователь | link_to ('Удалить', user, method:: delete, data: {подтвердить: «Вы уверены?»}:: Class => «btn btn-danger») end' У меня есть это и когда я ставлю Если условие вызывает ошибку, я использую wicegrid gem –

Смежные вопросы