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

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

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

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

Q&A

解決済

2回答

1282閲覧

railsで画像の変更が反映されない

tan1

総合スコア1

Ruby on Rails 6

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

0グッド

0クリップ

投稿2022/11/03 08:53

railsでログイン機能についての問題です。

ゲストログインをするとマイページにユーザーアイコンが表示されるように設定しています。
app/assets/images/内の画像ファイルを読み込んで表示させています。
この画像ファイルの中身を変えてもlocalhostでは変更が反映されず、herokuの本番環境では画像じたいが表示されません。

localhostで画像の変更が反映されていないのが、herokuのも影響しているのだと思います。

lsof -wni tcp:3000
のコマンドでlocalを一度切断して、新しくloxalhostを立ち上げても画像の変更が反映されません。
試しに他の文章を変えてみると、それは変更が反映されます。
その画像の変更だけが反映されません。

いかが関係ありそうなファイルとコードです。

app/views/public/show.html.erb

1<h2 class="font-weight-bold mb-3">mypage</h2> 2 <!--プロフィール画像--> 3 <%= image_tag @end_user.get_profile_image(150,150), class: "rounded-circle img" %> 4 <!--ユーザー名--> 5 <p><%= @end_user.name %></p>

app/models/user.rb

1# プロフィール画像の設定 2 has_one_attached :profile_image 3 4 # プロフィール画像(デフォルト)の設定 5 def get_profile_image(width, height) 6 unless profile_image.attached? 7 file_path = Rails.root.join("app/assets/images/pro.jpg") 8 profile_image.attach(io: File.open(file_path), filename: "default-image.jpg", content_type: "image/jpeg") 9 end 10 profile_image.variant(resize_to_limit: [width, height]).processed 11 end 12 13 # ゲストログインの設定 14 def self.guest 15 find_or_create_by!(name: "guestuser", email: "guest@example.com") do |user| 16 user.password = SecureRandom.urlsafe_base64 17 user.name = "guestuser" 18 end 19 end

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

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

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

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

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

guest

回答2

0

自己解決

ありがとうございます。
無事反映させることができました。
herokuの方も解決しました。

投稿2022/11/03 09:38

tan1

総合スコア1

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

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

0

profile_image.attach(i
していますから、assetsにあるimageをcopyしたものを表示しています、
ですから assetsのものを変更しても反映しません。
herokuは一旦落しると画像fileは削除されます。永続的に残すには S3など外部に保存する必要があります。

「マイページにユーザーアイコンが表示される」というのでユーザ毎にことなる画像かとおもったのですが、そうではなくて同じ画像で良いようですね。
でしたら assets の画像をそのまま使いましょう。
<%= image_tag 'pro.jpg', class: "rounded-circle img" %>
サイズの指定は CSS で行ってください

投稿2022/11/03 09:15

winterboum

総合スコア23329

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問