0

ペーパークリップを使用して Amazon S3 に写真を保存しています。通常のフォームを介してアップロードすると問題なく動作しますが、ユーザーが omniauth を介して Facebook に登録している場合、デフォルトでユーザーのプロフィール写真を Facebook の写真に設定したいと考えています。

画像ファイルのサイズ、名前、その他すべてのフィールドを適切に設定します。呼び出し時に正しいリンクも設定します

 <%= image_tag @user.profile_picture.url(:small) %>

しかし、何らかの理由で画像が保存されません。

繰り返しますが、フォームでアップロードすると、画像がうまくアップロードされます。

  <%= f.label :profile_picture %>
  <%= f.file_field :profile_picture %>

登録時にリンクから画像を解析する方法:

user.profile_picture=URI.parse(auth.info.image)

私のペーパークリップ構成:

  has_attached_file :profile_picture, styles: { small: "150x150>" },
                    path: "app/public/uploads/profile_pictures/:id/:style/:basename.:extension",
  validates_attachment_content_type :profile_picture, :content_type => ["image/jpg", "image/jpeg", "image/png", "image/gif"]
  validates_attachment_size :profile_picture, less_than: 2.megabytes

私の production.rb:

  config.paperclip_defaults = {
      :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']
      }
  }

Paperclip.rb 初期化子:

Paperclip::Attachment.default_options[:s3_host_name] = 's3-eu-west-1.amazonaws.com'
4

0 に答える 0