前提・実現したいこと
Railsで自己紹介ページに写真投稿&いいねができる機能を付け、共有できるサービスを作成しておりました。画像の縦横比を維持したまま、 width を最大 300px、height を最大 200 pxにリサイズしたい為、下記の通り実装後、写真アップロードの画面(posts/new.html.erb)で写真を選択して投稿しようとしたところ、下記のエラー表示が出るようになり、投稿できなくなってしまいました。(image_uploader.rbの5行目にprocess resize_to_fit: [300, 200]を追加前は特大の画像が投稿できていた)
※Gemfileにgem 'carrierwave'およびgem 'mini_magick'を追加し、bundle install済み
###①写真アップロードの画面(posts/new.html.erb)で写真を選択して投稿しようとすると、下記のエラー表示が出て、投稿できない。
発生している問題・エラーメッセージ
※posts/index.html.erb上でこちらの表示が出ます。
該当のソースコード
Ruby
1post.rb 2 3class Post < ApplicationRecord 4 mount_uploader :image, ImageUploader 5end
image_uploader.rbの一部分 class ImageUploader < CarrierWave::Uploader::Base # Include RMagick or MiniMagick support: # include CarrierWave::RMagick include CarrierWave::MiniMagick process resize_to_fit: [300, 200] # Choose what kind of storage to use for this uploader: storage :file # storage :fog # Override the directory where uploaded files will be stored. # This is a sensible default for uploaders that are meant to be mounted: def store_dir "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" end
posts/new.html.erb <div class="center jumbotron"> <div class="text-center"> <h2>写真アップロード</h2> </div> </div> <%= render 'form', post: @post %> <%= link_to 'Back', posts_path %>
posts/show.html.erb <p id="notice"><%= notice %></p> <p> <strong>Image:</strong> <%= image_tag @post.image.url if @post.image? %> </p> <%= link_to 'Edit', edit_post_path(@post) %> <%= link_to 'Back', user_path(current_user) %>
posts/index.html.erb <p id="notice"><%= notice %></p> <h1>Posts</h1> <table> <thead> <tr> <th>Image</th> <th colspan="3"></th> </tr> </thead> <tbody> <% @posts.each do |post| %> <tr> <td><%= post.image %></td> <td><%= link_to 'Show', post %></td> <td><%= link_to 'Edit', edit_post_path(post) %></td> <td><%= link_to 'Destroy', post, method: :delete, data: { confirm: 'Are you sure?' } %></td> </tr> <% end %> </tbody> </table> <br> <%= link_to 'New Post', new_post_path %>
_form.html.erb <%= form_with(model: post, local: true) do |form| %> <% if post.errors.any? %> <div id="error_explanation"> <h2><%= pluralize(post.errors.count, "error") %> prohibited this post from being saved:</h2> <ul> <% post.errors.full_messages.each do |message| %> <li><%= message %></li> <% end %> </ul> </div> <% end %> <div class="field"> <%= form.label :image %> <%= form.file_field :image %> </div> <div class="actions"> <%= form.submit %> </div> <% end %>
試したこと
GraphicsMagickをインストールしてみましたが、インストール方法が悪かったのか、症状変わりませんでした。
補足情報(FW/ツールのバージョンなど)
DB:MySQL
FW:Ruby on Rails5.2.2
コーディング環境:AWS Cloud9
バージョン管理システム:Git/GitHub
あなたの回答
tips
プレビュー