質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

Q&A

解決済

1回答

1298閲覧

メールに画像を添付したいのですが、画像ではなく文字が表示されている状態になっています。

avicii

総合スコア49

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

0グッド

0クリップ

投稿2020/03/11 15:24

編集2020/03/11 20:38

添付ファイルで画像を表示したいと考えています。しかし、メールに添付することはできたのですが、添付されているものが画像ではなく、文字が表示されてしまっています。もし文字から画像に表示を変える方法を知っている方がいらしたら、教えて頂きたいです。どうぞよろしくお願い致します。

/public/tmp
メールの画面にはこのように表示されています
イメージ説明
ボタンを押すと、このように表示されています
イメージ説明

/public/tmp
イメージ説明
イメージ説明

/public/user
![イメージ説明
イメージ説明⇨ここには画像が表示されています。

user_mailer.rb

mailer

1class UserMailer < ApplicationMailer 2 default from: "############@gmail.com" 3 layout 'mailer' 4 5 def new_registration_confirmation_mail(user) 6 7 @user = user 8 9 attachments[user.student_license.identifier] = File.read(Rails.root.join('./tmp/#{<%= user.student_license.thumb.url %>}')) 10 11 mail( 12 to: '<##############@gmail.com>', 13 subject: '添付ファイルの確認' 14 ) 15 end 16 17end 18

uploader

1class StudentLicenseUploader < CarrierWave::Uploader::Base 2 # Include RMagick or MiniMagick support: 3 # include CarrierWave::RMagick 4 include CarrierWave::MiniMagick 5 6 # Choose what kind of storage to use for this uploader: 7 if Rails.env.development? 8 storage :file 9 elsif Rails.env.test? 10 storage :file 11 else 12 storage :fog 13 end 14 # storage :fog 15 16 # Override the directory where uploaded files will be stored. 17 # This is a sensible default for uploaders that are meant to be mounted: 18 def store_dir 19 "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 20 end 21 22 # Provide a default URL as a default if there hasn't been a file uploaded: 23 # def default_url(*args) 24 # # For Rails 3.1+ asset pipeline compatibility: 25 # # ActionController::Base.helpers.asset_path("fallback/" + [version_name, "default.png"].compact.join('_')) 26 # 27 # "/images/fallback/" + [version_name, "default.png"].compact.join('_') 28 # end 29 process resize_to_fit: [300, 300] 30 # Process files as they are uploaded: 31 # process scale: [200, 300] 32 # 33 # def scale(width, height) 34 # # do something 35 # end 36 process :convert => 'jpg' 37 # Create different versions of your uploaded files: 38 # version :thumb do 39 # process resize_to_fit: [50, 50] 40 # end 41 version :thumb do 42 process resize_to_fit: [300, 300] 43 end 44 # Add a white list of extensions which are allowed to be uploaded. 45 # For images you might use something like this: 46 # def extension_whitelist 47 # %w(jpg jpeg gif png) 48 # end 49 50 # Override the filename of the uploaded files: 51 # Avoid using model.id or version_name here, see uploader/store.rb for details. 52 def filename 53 super.chomp(File.extname(super))+'jpg' if original_filename.present? 54 end 55end 56

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

拡張子ではないでしょうか?
/public/user のものはS_14327812.jpgであるのに対し、/public/tmp のものはS_14327812jpgとなっています。jpgの前に . がないことによって、jpegファイルであることが認識されていないように見受けられます。

filename関数内、文字列の結合部分が原因のように見受けられます。

ruby

1super.chomp(File.extname(super))+'jpg' if original_filename.present?

の部分ですが、jpgの前に.が入っていないことにより、添付されているファイルのファイル名から.が抜け落ちていると推測します

投稿2020/03/11 17:05

編集2020/03/12 06:46
SoulaS

総合スコア18

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

avicii

2020/03/11 20:35

tmpの.がない状態になっているのは、保存する際の設定によるものなのでしょうか?
SoulaS

2020/03/12 06:45

filename関数内、文字列の結合部分ではないでしょうか? ```ruby super.chomp(File.extname(super))+'jpg' if original_filename.present? ``` の部分ですが、jpgの前に.が入っていないことにより、添付されているファイルのファイル名から.が抜け落ちていると推測します
SoulaS

2020/03/12 06:47

コードブロックが見づらいので、回答に追記しておきました。
avicii

2020/03/16 11:14

大変返事が遅くなりました。.を追加することで解決することができました。回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問