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

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回答

1111閲覧

herokuデプロイ後、一部の投稿写真のみ表示されない

nakajima777

総合スコア2

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/08/10 17:13

前提・実現したいこと

herokuデプロイ後に一部の画像の表示がエラーになるため解消したい。

発生している問題・エラーメッセージ

heroku logs で確認したエラー

ActionController::RoutingError (No route matches [GET] "/system/photos/images/000/000/004/medium/gopro-4938732_1280.jpg"):

該当のソースコード

route

1Rails.application.routes.draw do 2 3 root 'pages#home' 4 get :about, to: 'pages#about' 5 6 devise_for :users, 7 path: '', 8 path_names: {sign_in: 'login', sign_out: 'logout', edit: 'profile', sign_up: 'registration'}, 9 controllers: {registrations: 'registrations'} 10 11 resources :users, only: [:show] 12 13 resources :cameras, except: [:edit] do 14 member do 15 get 'listing' 16 get 'pricing' 17 get 'description' 18 get 'photo_upload' 19 get 'amenities' 20 get 'location' 21 get 'preload' 22 get 'preview' 23 end 24 resources :photos, only: [:create, :destroy] 25 resources :reservations, only: [:create] 26 end 27 28 resources :guest_reviews, only: [:create, :destroy] 29 resources :host_reviews, only: [:create, :destroy] 30 31 get '/your_trips' => 'reservations#your_trips' 32 get '/your_reservations' => 'reservations#your_reservations' 33 34 get 'search' => 'pages#search' 35end

html.erb該当箇所

<div class="panel-heading preview"> <%= image_tag camera.cover_photo(:medium) %> </div>

cameras_controller.rb

cameras_controller.rb

1class CamerasController < ApplicationController 2 before_action :set_camera, except: [:index, :new, :create] 3 before_action :authenticate_user!, except: [:show] 4 before_action :is_authorised, only: [:listing, :pricing, :description, :photo_upload, :amenities, :location, :update] 5 6 def index 7 @cameras = current_user.cameras 8 end 9 10 def new 11 @camera = current_user.cameras.build 12 end 13 14 def create 15 @camera = current_user.cameras.build(camera_params) 16 if @camera.save 17 redirect_to listing_camera_path(@camera), notice: "登録しました!" 18 else 19 flash[:alert] = "登録できていません!" 20 render :new 21 end 22 end 23 24 def show 25 @photos = @camera.photos 26 end 27 28 def photo_upload 29 @photos = @camera.photos 30 end 31 32 def update 33 34 new_params = camera_params 35 new_params = camera_params.merge(active: true) if is_ready_camera 36 37 if @camera.update(camera_params) 38 flash[:notice] = "保存しました!" 39 else 40 flash[:alert] = "保存できていません!" 41 end 42 redirect_back(fallback_location: request.referer) 43 end 44 45 46 # --- Reservations --- 47 def preload 48 today = Date.today 49 reservations = @camera.reservations.where("start_date >= ? OR end_date >= ?", today, today) 50 51 render json: reservations 52 end 53 54 private 55 56 def is_conflict(start_date, end_date, camera) 57 check = camera.reservations.where("? < start_date AND end_date < ?", start_date, end_date) 58 check.size > 0? true : false 59 end 60 61 def set_camera 62 @camera = Camera.find(params[:id]) 63 end 64 65 def is_ready_camera 66 !@camera.active && !@camera.price.blank? && !@camera.listing_name.blank? && !@camera.photos.blank? && !@camera.address.blank? 67 end 68 69 def camera_params 70 params.require(:camera).permit(:camera_type, :company_type, :use_history, :condition, :listing_name, :summary, :address, :is_camera_case, :is_camera_leg, :is_light, :price, :active, :latitude, :longitude) 71 end 72end 73

camera.rb

class Camera < ApplicationRecord belongs_to :user has_many :photos has_many :reservations geocoded_by :address after_validation :geocode, if: :address_changed? validates :camera_type, presence: true validates :company_type, presence: true validates :use_history, presence: true def cover_photo(size) if self.photos.length > 0 self.photos[0].image.url(size) else "blank.jpg" end end def average_rating guest_reviews.count == 0 ? 0 : guest_reviews.average(:star).round(2).to_i end end

production.rb

config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?

試したこと

https://morizyun.github.io/ruby/rails-troubleshoot-no-route-match-assets.html

上記サイトなどを参考にしたがエラー解消につながらず。
ググっても解決できないため質問させて頂きました。

足りないソース等は提供させて頂きます。
よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

もしかして、投稿後約1日経過した画像が表示できなくなってたりしませんか?

herokuはある程度の時間が経過すると勝手に再起動を行い
そのときデプロイ時にアップロードしたファイル以外はすべて削除します。

ストレージへの保存以外の方法でアップロードされたファイルを保存しないとダメです。
典型的にはS3への保存やDBへの保存を行います。

投稿2020/08/11 00:33

asm

総合スコア15149

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

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

nakajima777

2020/08/12 06:30

返事遅くなりました。 一枚目の画像だけ表示され、それ以降表示されない状況です。 S3への保存を設定しています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問