这是我的用户模型“user.rb”,我希望人们可以使用他们的Facebook帐户登录并将他们的个人资料图片转移到我的网站。问题是它一直说“profile_picture”变量中的“user.image”是未定义的。 Ruby使用paperclip gem存储图像。
if ((c/2)*2 == c){
System.out.println("is even.");
}else{
System.out.println("is odd");
}
在我的html.erb文件中,我用以下方法调用image方法:
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :confirmable, :omniauthable
validates :fullname, presence: true, length: {in: 2..50}
def self.from_omniauth(auth)
user = User.where(email: auth.info.email).first
if user
return user
else
where(provider: auth.provider, uid: auth.uid).first_or_create do |user|
user.fullname = auth.info.name
user.provider = auth.provider
user.uid = auth.uid
user.email = auth.info.email
user.image = auth.info.image
user.password = Devise.friendly_token[0,20]
end
end
end
def profile_picture
if user.image
user.image
else
has_attached_file :avatar, :styles => { :medium => "300x300>", :thumb => "100x100#" }, :default_url => "/images/:style/missing.jpg"
validates_attachment_content_type :avatar, :content_type => /\Aimage\/.*\Z/
end
end
end
我知道我必须将其更改为:
<%= image_tag current_user.avatar.url(:thumb) %>
这是我的schema.rb文件:
<%= image_tag current_user.profile_picture %>
答案 0 :(得分:0)
user
方法中的 profile_picture
超出了范围。无论何时在方法中声明局部变量(例如user
),这只能在该方法的范围内使用。
current_user
是User
的一个实例,因此,如果您想要该用户的图片,只需拨打image_tag
:
<%= image_tag(current_user.image) %>