Ruby on rails 如何在自定义/索引操作中使用Desive检查用户?

Ruby on rails 如何在自定义/索引操作中使用Desive检查用户?,ruby-on-rails,devise,Ruby On Rails,Devise,我试图在我的照片#最新视图中检查一些规则,但我不知道如何在我的照片控制器中定义用户 我想检查一下: <% if current_user == @photo.user or current_user.has_role? :admin %> <%= link_to "Editar Spot", edit_user_photo_path(@user, @photo), class: "edit" %> <% end %> 也就是说: nil:NilClass的

我试图在我的
照片#最新
视图中检查一些规则,但我不知道如何在我的照片控制器中定义用户

我想检查一下:

<% if current_user == @photo.user or current_user.has_role? :admin %>
 <%= link_to "Editar Spot", edit_user_photo_path(@user, @photo), class: "edit" %>
<% end %>
也就是说:

nil:NilClass的未定义方法“user”

当我没有ID或参数时,我应该如何在控制器中定义用户


谢谢

您得到了nil:NilClass的未定义方法“user”的错误
。您的@photo变量似乎为零。您必须首先检查@photo是否为nil,然后才能检查照片的用户是否为当前用户。请尝试以下代码或确保@photo具有某些值

<% if (@photo.present? and current_user == @photo.user) or current_user.has_role? :admin %>


您的回溯错误是什么?@MarekLipka,在这种情况下,回溯无关紧要,因为代码无效@Gibson您的
@photo
变量定义在哪里?@Gibson您应该将此回溯放在问题中,而不是注释中。@IS04您是对的
@photo
nil
,这就是为什么这个代码不起作用。@IS04我已经更新了最新的操作
<% if (@photo.present? and current_user == @photo.user) or current_user.has_role? :admin %>