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

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

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

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

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

1511閲覧

herokuで画像が反映されない

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby

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

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2020/10/13 07:36

先日も同じような内容で質問させていただきましたが、未だ解決できずにいるため、再度質問いたします。

解決したいこと

herokuにデプロイ後、seedファイルを反映させても、画像が表示されない。(ローカル環境では正しく表示されています)

現状は以下のとおりです。
seedファイルのデータに画像をアタッチさせる。
エラー文

Failed to load resource: the server responded with a status of 500 (Internal Server Error)

画像を確認してみてもNothing to previewとなってしまっている
イメージ説明
画像はpublic/imagesの中に入っている
ローカルでは画像は表示されている。
ログを確認したところstatus=500 との記載のみで解決策を見出せない

該当のソースコード

seed

1require "csv" 2 3CSV.foreach('db/store.csv', headers: true) do |row| 4 laundry = Laundry.new( 5 name: row['name'] , 6 address: row['address'], 7 opening_date: row['opening_date'], 8 open_time: row['open_time'], 9 close_time: row['close_time'], 10 shoe_washing: row['shoe_washing'], 11 futon_washing: row['futon_washing'], 12 dryer: row['dryer'], 13 washing_machine: row['washing_machine'] 14 ) 15 laundry.image.attach(io: File.open('public/images/image.jpg'), filename: 'image.jpg') 16 laundry.save 17end

以下show.html.erb、該当部分の記述です

html

1 <%= image_tag @laundry.image.variant(resize: '300x300'), class: 'store-image' %> 2

試したこと
1.先日投稿した内容でいただいたご指摘をもとに

<%= image_tag @laundry.image.url, class: 'store-image' %>

としてみましたがエラーが表示される。
2.以前は画像をapp/assets/images内に配置していましたが、public/imagesに変更、それに伴いseedファイルのパスも変更しましたが、画像は表示されないままでした。(herokuでdbのリセットも行いましたが変化なし)

エラー内容から画像のパスが正しくないのではないかと考えているのですがどのように修正をすれば良いのかがわからない状態です。
なにか見当がつく方がいましたらアドバイスをお願いいたします。

###補足情報(FW/ツールのバージョンなど)
ruby '2.6.5'
rails '6.0.3'
DBはローカルも本番環境もmysqlを使用。

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

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

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

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

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

hatsu

2020/10/13 13:04

console使って問題ないなら、たとえばheroku run rails consoleとして Laundry.last.imageやLaundry.last.image.urlで期待するデータが取得できますでしょうか? >Nothing to preview は画像のURLにアクセスしているときにおきているのでしょうか。Publicフォルダに画像があるならば、 /images/image.jpg で表示されるかと思いました。
退会済みユーザー

退会済みユーザー

2020/10/13 13:29 編集

ご返答ありがとうございます。 heroku run rails consoleでLaundry.last.image.urlを行ってみたところ、エラーが表示されてしまいます(NoMethodError: undefined method `url' ) Nothing to previewに関してはエラーメッセージ のURLから辿りついたものです(今再度確認してみたのですがどのようにNothing to previewの画面に辿りついたかがわからなくなってしまいました。申し訳ありません。) /images/image.jpgで行ってみたのですがローカルでrails db:seedを行うと No such file or directory @ rb_sysopen - /images/image.jpgとなってしまいデータが入らない状況となっています。(確認しましたが、ファイルの場所を入れ間違えているということはありません)
hatsu

2020/10/13 16:02

Laundry.last.imageでは<ActiveStorage::Attached::One:みたいな感じで画像データが保存されている感じですかね? または以下のようにS3にデータを保存していないとかはありませんでしょうか?https://qiita.com/hmmrjn/items/479c9e9ce82771f1b6d7
退会済みユーザー

退会済みユーザー

2020/10/13 23:09

そうです。Laundry.last.imageでは画像データが保存されています。(ActiveStorage::Attached::One・・・と表示) S3へのデータ保存はやっていないです。1度やってみます。ありがとうございます。 まだ理解が浅く教えていただきたいのですが、画像の保存先はS3に設定をしないと表示をされないのでしょうか?(24時間経過するとリセットされるがS3に保存先を設定しなくてもheroku上で表示されるものだと認識していました。)
退会済みユーザー

退会済みユーザー

2020/10/14 02:07

S3にデータを保存するよう設定したところ表示されました! 再度勉強し直します。 本当にありがとうございました。
guest

回答1

0

ベストアンサー

質問をしていく中で、ActiveStorageを利用して画像の保存はされているが、S3に画像が保存されていないとわかり、以下の記事を参考にaws-sdk-s3 gemをいれ、storage.ymlをamazon用に置き換える手順でHerokuでも画像の表示が確認できたため、回答として記載します

【Rails】Herokuで画像を投稿できるようにする方法(ActiveStorage + Amazon S3)

投稿2020/10/14 02:14

hatsu

総合スコア1809

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

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

退会済みユーザー

退会済みユーザー

2020/10/14 03:05

無事表示させることができました。 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問