Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 试图得到;“当前用户”;在轨_Ruby On Rails - Fatal编程技术网

Ruby on rails 试图得到;“当前用户”;在轨

Ruby on rails 试图得到;“当前用户”;在轨,ruby-on-rails,Ruby On Rails,在/views/layouts目录中,如何获取当前用户?我正在使用Desive,但由于某种原因,当前用户在这里不起作用,它将其描述为未知方法。我想做一些类似的事情: <% if User.role? == "gen_admin" %> <li> <%= link_to('Admin', users ) %> </li> <% end %> 您已将角色?方法定义为实例方法。这意味着为了使用它,您应该首先从User

/views/layouts
目录中,如何获取当前用户?我正在使用Desive,但由于某种原因,当前用户在这里不起作用,它将其描述为未知方法。我想做一些类似的事情:

<% if User.role? == "gen_admin" %>
    <li>
    <%= link_to('Admin', users ) %>
    </li>
<% end %>

您已将
角色?
方法定义为实例方法。这意味着为了使用它,您应该首先从
User
类创建实例,例如:

@user=User.new
现在您可以调用
@user.role?

如果您想通过模型
用户
获得
角色?
,则应将其定义为类方法,在对象中传递以进行验证

def self.role?(user)

...

end

您是否忘记在\u过滤器:验证\u用户之前添加
在您的控制器中?这将确保当前用户在视图中可用

您需要更改视图中的代码以使用
当前用户
,而不是
用户
,并正确调用
角色?
方法(无
=
)。如果在非登录用户可以访问的视图中使用此选项,您需要确认该用户已首先登录(因此您不会尝试在
nil
上调用
role?
,这将引发异常):



  • 您的代码必须说明用户何时登录以及何时未登录

    如果没有用户登录,则
    当前用户
    将返回nil(与您的情况相同,您认为这是Desive的一个错误)

    您的视图代码必须处理此问题-例如

    <% if current_user.present? && current_user.role?('gen_admin') %>
    
    
    
    您能提供方法
    角色的代码吗?
    好的,我添加了用户方法尝试放置
    self
    ,这样它就变成了
    def self.role?(基本角色)ROLES.index(基本角色)to_s)当您尝试使用
    当前用户时,您会遇到什么错误?一旦你可以使用它,而不是
    ,你将希望使用似乎没有改变它的
    @Newbie。不,它强制用户必须登录才能访问当前操作。我的答案可能不清楚,但我认为它在某种程度上是正确的,因为如果你不使用
    :authenticate\u user
    在您的控制器中,从该控制器访问视图中的当前用户将是错误的,对吗?没有
    :验证用户身份,我们还能使用
    当前用户吗?是的,您可以使用
    当前用户
    。不强制登录并不意味着用户无法登录。不,您不需要调用
    authenticate\u user
    来设置当前用户。很酷,我自己没有使用designe,所以我不确定。删除了我答案的那部分。剩下的答案是正确的,尽管我猜你使用的
    .present?
    稍微更彻底一些(当前用户
    是否有可能返回一个
    空的
    对象?)。这个网站上的人有时候很奇怪。你的回答并不是我所需要的,但它肯定能帮助其他人。谢谢你对胡迪尼的支持!也许我误解了你的问题。如果你解决了你的问题,那么我为你感到高兴,如果没有,你能再进一步吗?好的,这让我通过了零:物体投诉。谢谢你的信息,我不知道你必须解释没有用户被明确登录。但现在它说:
    参数的数目错误(2对1)
    ,指的是角色?我相信这种方法。对这个有什么想法吗?没关系,我必须把“自我”从角色中去掉?出于某种原因,我选择了这个方法。谢谢你的帮助!
    <% if current_user && current_user.role?("gen_admin") %>
      <li>
        <%= link_to('Admin', users ) %>
      </li>
    <% end %>
    
    <% if current_user.present? && current_user.role?('gen_admin') %>