我有一个使用Devise进行身份验证的网络应用。这是一个允许用户上传图片的网站,因此网址为/images/2
。有一个单独的图像控制器。
如何在该图片上显示用户名?我已经放= user.name
来显示用户名,顺便说一下,这是HAML。我也试过= @user.name
= user.name
显示undefined local variable or method user for #<#<Class:0x007f8f9c28d2e0>:0x007f8f9c287f70>
= @user.name
显示undefined method name for nil:NilClass
答案 0 :(得分:1)
图片与发布图片的用户之间是否存在关联?像这样:
# image.rb
belongs_to :user
# user.rb
has_many :images
在这种情况下,您不必在控制器中设置@user变量。您可以在视图中使用@image.user
直接访问拥有的用户。要发布用户名,您可以将其链接起来:@image.user.name
,更好的方法是修改用户的to_s方法,如下所示。如果您尝试显示对象,则会自动调用此方法,因此您只需使用@image.user
显示名称。
# user.rb
def to_s
self.name
end
答案 1 :(得分:0)
@user.name
似乎失败了,因为当您在图像控制器中时,未将@user
变量设置为正确的值。
还要尝试current_user
是否返回实例。换句话说,而不是= @user.name
尝试= current_user.name
。
我不能给你更多信息。我过去从未与Devise
合作过。