🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby on Rails 4

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

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

2回答

959閲覧

productionモードでassets/imagesフォルダ配下の画像を表示したい

begenner

総合スコア80

Ruby on Rails 4

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

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

2クリップ

投稿2019/10/25 02:40

編集2019/11/10 11:38

現在AWS(amazon linux2)にRailsアプリをデプロイし、ブラウザでの動作確認をしています。
development環境で表示されていた画像がproduction環境で表示されません。
現状としては下記の状況になっています。

  • 画像拡張子はpng
  • コードではimage_tagヘルパーを利用している
  • productionモードでは画像が表示されない(alt属性のyyyが文字で表示される)
  • 表示されない画像はapp/assets/images/creditsフォルダ内に存在している
  • imagesフォルダ直下の画像は表示されている
  • ブラウザで確認すると<img src="/images/credits/visa" alt="Visa" width="40" height="25">と表示される

エラーログでみてみると

bash

1ActionController::RoutingError (No route matches [GET] "/images/credits/visa")

と表示されています。

を参考にしましたが全くわかりません(m_ m)
もしわかる方がいらっしゃればご教授いただきますようよろしくお願いいたします(m
_m)

期待する動作

  • app/assets/images/creditsフォルダ内の画像がaws環境で表示されるようにしたい

エラー内容

  • app/assets/images/creditsフォルダ内の画像がimage_tagヘルパーを利用して表示できない
  • ログ上では下記のエラーが発生している
ActionController::RoutingError (No route matches [GET] "/images/xxx/yyy"):

動作環境

RailsAWS
Ruby: 2.4.5Amazon linux2
Rails: 4.2.11.1nginx: 1.16.1
Devise: 4.7.1EC2、RDS(MySQL)
dotenv-railsを使用HTTPS(Route53)設定済

試したこと

  1. config/initializers/assets.rbapp/assets/images/credits/*.pngを追加
  2. unicornを停止、bundle exec rake assets:precompile RAILS_ENV=productionを実行
  3. インスタンスを再起動

該当しそうなコード

  • (1 / 3)config/initializers/assets.rb

ruby

1# config/initializers/assets.rb 2Rails.application.config.assets.precompile += [ 'images/credits/*.png' ]
  • (2 / 3)config/environments/production.rb

ruby

1# config/environments/production.rb 2Rails.application.configure do 3 : 4 config.serve_static_files = true 5end
  • (3 / 3) 該当erbファイル

erb

1<div class="text-center"> 2 <%= image_tag "credits/#{(@card["brand"].gsub(" ","")).downcase}", size: '40x25' % 3</div> 4

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

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

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

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

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

guest

回答2

0

確認ですが YYYファイルを置いた assets/images/xxxフォルダ とは public/assets/images/xxx ですか app/assets/images/xxx ですか?

image_tagヘルパーを利用する場合は後者です。
しかしその場合は No route matches [GET] "/images/xxx/yyy" ではなくpointer-4aada752a80ff7ae8057e071c908eb9dd36fb9c60c8f3215e100199c6af920eb.png と言った感じのファイル名になっています。

ので、はて、、、と。

投稿2019/11/09 13:17

winterboum

総合スコア23567

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

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

begenner

2019/11/10 11:31

ご指摘いただいたことを確認すると app/assets/images/xxx public/assets/images/xxx 両方に同じ画像ファイルを配置していました。 public/assets/images/xxxのディレクトリを削除し、コンパイルして再起動しても状況が変わりませんでした(m_ _m) 他に考えられる原因はありますでしょうか?
guest

0

自己解決

image_tag の文字列の中に拡張子 .png をつけることで解決しました(m_ _m)

投稿2019/11/10 11:50

begenner

総合スコア80

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問