我在做什么错误Ruby on Rails facebook登录

时间:2015-09-27 18:06:09

标签: ruby-on-rails ruby facebook paperclip

这是我的用户模型“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 %>

1 个答案:

答案 0 :(得分:0)

user方法中的

profile_picture超出了范围。无论何时在方法中声明局部变量(例如user),这只能在该方法的范围内使用。

current_userUser的一个实例,因此,如果您想要该用户的图片,只需拨打image_tag<%= image_tag(current_user.image) %>