Rails 3.1 Показать имя пользователя в контроллере изображений - PullRequest
0 голосов
/ 30 октября 2011

У меня есть веб-приложение, которое использует Devise для аутентификации.Это сайт, который позволяет пользователю загружать изображения, поэтому URL будет /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 ]

1 голос
/ 30 октября 2011

Есть ли у вас связь между изображением и пользователем, который разместил изображение?Например:

# 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
0 голосов
/ 30 октября 2011

Кажется, что @user.name дает сбой, потому что вы не устанавливаете для переменной @user правильное значение, пока вы находитесь в контроллере изображений.

Попробуйте также, возвращает ли current_user экземпляр.Другими словами, вместо = @user.name попробуйте = current_user.name.

Я не могу дать вам больше информации.Я никогда не работал с Devise в прошлом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...