2011-01-21 71 views
0

我在我的Rails应用程序中实现了Authlogic,该应用程序的工作和测试都很棒。用户可以登录,注销等Rails + Authlogic @current_user问题 - “Show”方法不再有效

然而,因为我改变了我的方法在users_controller使用@current_user变量,没有我的用户的方法或形式(而不是“指数”奇怪的是其他...... )工作!

例如,这场“秀”的方法的工作原理,并显示任何用户(注:我想最终限制这在当前登录的用户以某种方式):用户配置文件

def show 
    @user = User.find(params[:id]) 
end 

如果我按照如Authlogic显示show方法轨演员和官方例子:

def show 
    @user = @current_user 
end 

我获得各种undefined method METHOD for nil:NilClass错误。看起来虽然@current_user变量不包含任何用户的信息。

我假设@current_user从CURRENT_USER方法拉动信息如下应用控制器定义:

我缺少什么?我的直觉是用户模型中的User对象和current_user方法之间没有映射关系。任何帮助将不胜感激!

在此先感谢!

〜丹

回答

5

它不应该只是

def show 
    @user = current_user 
end 

没有@

+0

正确的博客链接,设计提供了`current_user`方法给你。 – 2011-01-21 21:46:23

+0

这对我来说是有道理的,我知道我正在调用一个方法而不是预定义的变量。这有点令人困惑,因为在线示例代码中的大多数都将其设置为@user = @current_user。再次感谢你的帮助!这就是为什么我喜欢StackOverflow – thoughtpunch 2011-01-22 02:10:50

1
def 
if @current_user 
@user = @current_user 
else 
@user = User.find(params[:id]) 
end 
end 

只是猜测,试试吧。

+0

这不是完整的答案,但我最终使用这个想法让未登录的用户看到配置文件。谢谢! – thoughtpunch 2011-01-24 19:42:09

2

current_user是authlogic附带的帮助程序,所以您必须不使用'@'来使用它。 通常情况下,您会创建@sothing以将其从控制器传递到视图,因此您将访问您在操作方法中准备的内容。

+0

这很有道理......我想知道他们为什么在Github上的示例代码中设置了这种方式? – thoughtpunch 2011-01-22 02:09:10