Heroku 赫罗库+;轨道4+;带AWS S3 URL的回形针不工作

Heroku 赫罗库+;轨道4+;带AWS S3 URL的回形针不工作,heroku,ruby-on-rails-4,devise,amazon-s3,paperclip,Heroku,Ruby On Rails 4,Devise,Amazon S3,Paperclip,所以,目前我在获取头像的URL和个人资料页面的个人资料封面图像时遇到了问题 有趣的是,如果我使用: current_user.avatar.url(:thumb) # it will not show if I use: @user.avatar.url(:thumb) # production.rb paperclip config config.paperclip_defaults = { :url => ":s3_domain_url", :path => "/:class

所以,目前我在获取头像的URL和个人资料页面的个人资料封面图像时遇到了问题

有趣的是,如果我使用:

current_user.avatar.url(:thumb)

# it will not show if I use:
@user.avatar.url(:thumb)

# production.rb paperclip config
config.paperclip_defaults = {
:url => ":s3_domain_url",
:path => "/:class/:attachment/:id/:style/:filename",
:storage => :s3,
:s3_credentials => {
  :bucket => ENV['S3_BUCKET_NAME'],
  :access_key_id => ENV['AWS_ACCESS_KEY_ID'],
  :secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']
  }
}

# user.rb model
has_attached_file :avatar, :styles => { :medium => "300x300>", :thumb => "100x100>" }
has_attached_file :cover_image, :styles => { :large => "900x900#" }

# Using devise so this is all I have for the user. It handles editing and everything else.
# users_controller.rb
class UsersController < ApplicationController

  def show
    @user = User.find_by_username(params[:username])
    Visit.track(@user, request.remote_ip)
  end

  def home
  end

end

# application_controller.rb changes to devise to allow for other fields in forms.
before_action :configure_permitted_parameters, if: :devise_controller?

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up) do |u|
      u.permit(:username, :first_name, :last_name, :email, :password, :password_confirmation)
    end
    devise_parameter_sanitizer.for(:account_update) do |u|
      u.permit(:username, :first_name, :last_name, :bio, :email, :password, :password_confirmation, :current_password, :avatar, :cover_image)
    end
  end
当前用户.avatar.url(:thumb)
#如果我使用:
@user.avatar.url(:thumb)
#production.rb回形针配置
config.paperclip\u默认值={
:url=>“:s3\u域\u url”,
:path=>“/:class/:attachment/:id/:style/:filename”,
:storage=>:s3,
:s3_凭证=>{
:bucket=>ENV['S3_bucket_NAME'],
:access_key_id=>ENV['AWS_access_key_id'],
:secret\u access\u key=>ENV['AWS\u secret\u access\u key']
}
}
#user.rb模型
已附加文件:头像,:样式=>{:medium=>“300x300>”,:thumb=>“100x100>”}
已附加文件:封面图片,:style=>{:large=>“900x900#”}
#使用Desive,这就是我为用户所拥有的一切。它处理编辑和其他一切。
#用户\u controller.rb
类UsersController
在标题中,我让它显示用户配置文件图像,在配置文件中,我使用与标题中相同的代码。以下是此链接图片中的配置文件和带有配置文件图像的标题:

但是当它使用@user对象而不是designe中的当前_user对象时,它会返回如下URL:“/avatars/thumb/missing.png”而不是获取S3URL。但问题是,它是存在的。。。它显示在标题中


我在这里简直是哑口无言,不知道是什么原因导致回形针抓住了这个url而不是正确的url。这里关于StackOverflow的其他答案没有帮助,但是类似的问题。谢谢!:)

如果您没有使用
@user.avatar.url(:thumb)
看到化身,则这意味着在这种情况下
@user
引用的用户记录没有关联的化身。因此,
missing.png

下面是一个值得思考的问题,您可以通过以下方式检查
当前用户
@user

  def show
    @user = User.find_by_username(params[:username])
    puts @user.inspect  ## See which record @user is referring to, check if it has an avatar
    Visit.track(@user, request.remote_ip)
  end
您还可以执行
放置当前用户。检查
并查看当前用户信息

简而言之,
current_user
@user
没有指向同一条记录


让我知道您的
检查结果。

请与管理员分享相关代码。将其添加到问题中。感谢分享代码。请看我的答案。谢谢!这起作用了。。。下次遇到这样的问题,我一定要试试这个。我的当前用户和我试图查看的个人资料(我的个人资料)完全不同。我重置了数据库,现在一切都好了。非常感谢:)