上传的图像未显示在 rails 应用程序的 ruby 中(除头像以外的所有其他内容都在保存和更新)

uploaded image not displaying in ruby on rails app (everything else other than avatar are saving and updating )

您好,我正在使用回形针上传图片。问题是,当用户使用 fb 登录时,它会显示来自 fb 的个人资料图片,一旦他登录,他就可以在应用程序中更改个人资料图片。但更改后的图片没有显示。 我存储了默认图片,显示给使用电子邮件注册的用户。如何显示新上传的照片。

我的用户模型是,

   has_attached_file :avatar, :styles => { :medium => "300x300>", :thumb 

=> "100x100#" }
   validates_attachment_content_type :avatar, :content_type => /\Aimage\/.*\Z/


   def self.from_omniauth(auth)
    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]
        user.skip_confirmation! unless user.confirmed?
      end
  end

我的申请助手是

module ApplicationHelper
    def avatar_url(user)
        if user.image
            user.image
        else
            "/images/missing.png"
        end
    end
end

我的编辑视图

<div class="row">
    <label class="col-xs-4" for="avatar">Profile picture</label>
    <div class="col-xs-8">
        <%= f.file_field :avatar %>
    </div>
</div>

我的表演观点是,

<%= image_tag avatar_url(@user), class: "avatar-full" %>

SQL 翻译是:

(0.0ms) begin transaction SQL (0.0ms)
UPDATE "sessions"
SET "data" = ?, "updated_at" = ? 
WHERE "sessions"."id" = ? [["data", "BAh7CEkiGXdhcmRlbi51c2VyLnVzZXIua2V5BjoGRVRbB1sGaSBJIiIkMmEk\nMTAkaWd6Nno3enNzU‌​jdja2F5ZzJWUXlXZQY7AFRJIhBfY3NyZl90b2tlbgY7\nAEZJIjFpZnV2S0NTckczVDlhQmNEL0pIdnkw‌​TTY0Rk9LaXdXTzIwdXd6eVBl\nQ0lFPQY7AEZJIgpmbGFzaAY7AFR7B0kiDGRpc2NhcmQGOwBUWwZJIgt‌​ub3Rp\nY2UGOwBGSSIMZmxhc2hlcwY7AFR7BkAQSSIwWW91ciBhY2NvdW50IGhhcyBi\nZWVuIHVwZGF0‌​ZWQgc3VjY2Vzc2Z1bGx5LgY7AFQ=\n"], 
["updated_at", "2016-05-18 15:39:41.667689"], ["id", 57]]
(96.6ms) commit transaction

取决于您用于回形针上传的字段

案例一

如果您的 Migration 中有 t.attachment :image 作为 field_name,那么,

在你的辅助模块中

请将user.image改为user.image.urluser.image.url(:thumb)

 module ApplicationHelper
    def avatar_url(user)
       if user.image.present?
          user.image.url #for original image
          #user.image.url(:thumb) #for thumbnail
      else
         "/images/missing.png"
      end
  end
end

在你的模型中

 has_attached_file :image

案例二

并且如果您在 Migration 中将 t.attachment :avatar 作为 field_name,那么,

在你的辅助模块中

请将user.image改为user.avatar.urluser.avatar.url(:thumb)

 module ApplicationHelper
    def avatar_url(user)
       if user.avatar.present?
          user.avatar.url #for original image
          #user.avatar.url(:thumb) #for thumbnail
      else
         "/images/missing.png"
      end
  end
end

在你的模型中

在你的 Ominauth 方法中

user.avatar = auth.info.image