2014-10-04 77 views
0

我正在学习ROR,我在用户仪表板区域中呈现了一些局部侧栏,并且我在仪表板中返回用户名称,如下所示。最初仪表板布局仅包含在用户控制器中。但现在我需要用一个新的控制器使用它如何从cookie会话数据(RAILS)中检索用户名

<h1>Welcome Back, <%= @user.name %> </h1> 

,所以我把它改成

<h1>Welcome Back, <%= current_user %> </h1> 

但现在的问题是,而不是返回的用户名,CURRENT_USER返回该

#<User:0x007fa8ee293940> 
我假设的

是remember_token散列。现在,由于current_user已经有会话cookie,我不知道如何遍历数据库以获取用户名。有人可以帮我调整current_user,这样它会得到当前会话用户,但返回用户名吗?

谢谢!

这里是我的会话帮手

def sign_in(user) 
     remember_token = User.new_remember_token 
     cookies.permanent[:remember_token] = remember_token 
     user.update_attribute(:remember_token, User.digest(remember_token)) 
     self.current_user = user 
    end 

    def current_user= (user) 
     @current_user = user 
    end 

    def current_user 
     remember_token = User.digest(cookies[:remember_token]) 
     @current_user || User.find_by(remember_token: remember_token)  
    end 

回答

1

<User:0x007fa8ee293940> 是用户对象的字符串表示。您需要该对象的名称属性,类似于您之前所做的(@ user.name)。而不是current_user,current_user.name应该这样做。

+0

AH OMG!谢谢!你是完全正确的! – 2014-10-04 19:19:52