【发布时间】:2012-11-22 00:22:44
【问题描述】:
我最近开始学习 ruby on rails,我能够成功地创建一个应用程序并使用 devise 添加用户,还可以使用回形针向用户添加头像。
现在我遇到了如何在整个应用中显示头像的问题。例如,头像仅显示在http:localhost:3000/users/...(在设计文件夹中)中,但如果我尝试使用标签创建新页面、模型、控制器http://localhost:3000/profile/,例如
<%= image_tag @user.avatar.url(:thumb) %>
页面将无法加载并返回此错误
undefined method 'avatar?' for nil:NilClass
这可能很简单,但我不知道如何解决它。
我的模型user.rb 看起来像这样:
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
validates_uniqueness_of :username
has_attached_file :avatar, :styles => { :medium => "300x300>", :thumb => "100x100>" }
attr_accessible :name, :username, :email, :password, :password_confirmation, :remember_me, :avatar
attr_accessor :current_password
end
我的控制器看起来像这样:
class UserController < ApplicationController
def profile
end
end
谢谢!
【问题讨论】:
-
这里肯定需要更多上下文。乍一看,您的配置文件控制器中似乎没有定义
@user变量。请从您的Profile模型和控制器中发布代码。 -
谢谢。我刚刚用我的模型和控制器更新了这个问题。希望对您有所帮助。
-
您首先需要找到调用方法
avatar?的位置(注意这与您在示例<%= image_tag @user.avatar.url(:thumb) %>中显示的方法avatar不同。
标签: ruby-on-rails devise paperclip