【问题标题】:Ruby on Rails cannot show paperclip avatar within the appRuby on Rails 无法在应用程序中显示回形针头像
【发布时间】: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? 的位置(注意这与您在示例&lt;%= image_tag @user.avatar.url(:thumb) %&gt; 中显示的方法avatar 不同。

标签: ruby-on-rails devise paperclip


【解决方案1】:

在 routes.rb 上,你应该有这样的东西:

match "profile" => "user#profile"

在您的 UserController 上,您应该有这样的内容:

class UserController < ApplicationController
  def profile
    @user = current_user
  end
end

然后您就可以使用@user.avatar.url。另外,请注意,如果您没有登录用户,current_user 将为nil,然后您将遇到您描述的错误,因此请在您的控制器上添加这样的内容:

class UserController < ApplicationController
  before_filter :authenticate_user!

  def profile
    @user = current_user
  end
end

然后,当未经身份验证的帐户尝试访问 /profile 时,它将被重定向到登录表单。

【讨论】:

  • 效果很好。我最初有 '@user = User.find(current_user.username)' 但我遇到了一些奇怪的错误。奥布里加多!
【解决方案2】:

我还是 Rails 的新手,如果我错了,请纠正我,但我认为这可能对你有用。

class UserController < ApplicationController
  def profile
    @user = User.find(current_user.username)
  end
end

【讨论】:

  • 在这种情况下你的主键是什么?
  • 我使用了 '@user = current_user' 并且有效。无论如何谢谢! :)
猜你喜欢
  • 1970-01-01
  • 2019-10-17
  • 1970-01-01
  • 1970-01-01
  • 2017-01-14
  • 1970-01-01
  • 1970-01-01
  • 2014-11-25
  • 2015-11-14
相关资源
最近更新 更多