Rails 3.1在图像控制器中显示用户名

时间:2011-10-30 12:56:29

标签: ruby-on-rails-3.1

我有一个使用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

2 个答案:

答案 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合作过。