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

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

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

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

アップロード

アップロードは特定のファイルをウェブサーバに送るプロセスのことを指します。

Ruby on Rails

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

Q&A

0回答

783閲覧

Rails carrierwaveによる画像アップロードができない

kozimatakesi

総合スコア0

Ruby

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

アップロード

アップロードは特定のファイルをウェブサーバに送るプロセスのことを指します。

Ruby on Rails

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

0グッド

0クリップ

投稿2020/05/15 07:44

編集2020/05/15 07:46

前提・実現したいこと

Rails開発環境にて、画像をアップロードしたい

現在Railsチュートリアルを学習中です。
13章 13.4.1 基本的な画像アップロード
にて、手順通りに行うも、以下のエラーメッセージが発生しました。

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

フォームのエラーメッセージ Picture translation missing: en.errors.messages.mini_magick_processing_error
エラーメッセージ <ActionController::Parameters {"utf8"=>"✓", "authenticity_token"=>"Rr5XXokiLYs6Lla244n561ql/4/vnX3a5P3c0waRmkaw6mqujT6hvZQo4XbzVCjzlwiReXJTflWJZHUFqLItUw==", "micropost"=><ActionController::Parameters {"content"=>"笑うわ", "picture"=>#<ActionDispatch::Http::UploadedFile:0x00007fc6aceb6e58 @tempfile=#<Tempfile:/tmp/RackMultipart20200515-14458-ytxylq.jpg>, @original_filename="202761.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"micropost[picture]\"; filename=\"202761.jpg\"\r\nContent-Type: image/jpeg\r\n">} permitted: false>, "commit"=>"Post", "controller"=>"microposts", "action"=>"create"} permitted: false>

該当のソースコード

Gemfile

1source 'https://rubygems.org' 2 3gem 'rails', '5.1.6' 4gem 'bcrypt', '3.1.11' 5gem 'faker', '1.7.3' 6gem 'carrierwave' 7gem 'mini_magick' 8gem 'fog' 9gem 'will_paginate', '3.1.5' 10gem 'bootstrap-will_paginate', '1.0.0' 11gem 'rails-controller-testing' 12gem 'bootstrap-sass','3.3.7' 13gem 'puma', '3.9.1' 14gem 'sass-rails', '5.0.6' 15gem 'uglifier', '3.2.0' 16gem 'coffee-rails', '4.2.2' 17gem 'jquery-rails', '4.3.1' 18gem 'turbolinks', '5.0.1' 19gem 'jbuilder', '2.6.4' 20 21group :development, :test do 22 gem 'sqlite3', '1.3.13' 23 gem 'byebug', '9.0.6', platform: :mri 24end 25 26group :development do 27 gem 'web-console', '3.5.1' 28 gem 'listen', '3.1.5' 29 gem 'spring', '2.0.2' 30 gem 'spring-watcher-listen', '2.0.1' 31end 32 33group :production do 34 gem 'pg', '0.18.4' 35end 36

micropost.rb

class Micropost < ApplicationRecord has_many :comments belongs_to :user has_many :likes, dependent: :destroy default_scope -> { order(created_at: :desc) } mount_uploader :picture, PictureUploader validates :user_id, presence: true validates :content, presence: true, length: { maximum: 140 } validate :picture_size def self.search(search) if search Micropost.where(['content LIKE ?', "%#{search}%"]) else Micropost.all end end private # アップロードされた画像のサイズをバリデーションする def picture_size if picture.size > 5.megabytes errors.add(:picture, "should be less than 5MB") end end end

picture_uploader

class PictureUploader < CarrierWave::Uploader::Base include CarrierWave::MiniMagick process resize_to_fill: [400, 400, "Center"] if Rails.env.production? storage :fog else storage :file end # アップロードファイルの保存先ディレクトリは上書き可能 # 下記はデフォルトの保存先 def store_dir "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" end # アップロード可能な拡張子のリスト def extension_white_list %w(jpg jpeg gif png) end def filename original_filename if original_filename end end

_micropost_form.html.erb

<%= form_for(@micropost) do |f| %> <%= render 'shared/error_messages', object: f.object %> <div class="field"> <%= f.text_area :content, placeholder: "Compose new micropost..." %> </div> <%= f.submit "Post", class: "btn btn-primary" %> <span class="picture"> <%= f.file_field :picture, accept: 'image/jpeg,image/gif,image/png' %> </span> <% end %> <script type="text/javascript"> $('#micropost_picture').bind('change', function() { var size_in_megabytes = this.files[0].size/1024/1024; if (size_in_megabytes > 5) { alert('Maximum file size is 5MB. Please choose a smaller file.'); } }); </script>

micropost_controller.rb

class MicropostsController < ApplicationController before_action :logged_in_user, only: [:create, :destroy] before_action :correct_user, only: :destroy def index @microposts = Micropost.paginate(page: params[:page]).search(params[:search]) end def new if logged_in? @micropost = current_user.microposts.build @feed_items = current_user.feed.paginate(page: params[:page]) end end def create @micropost = current_user.microposts.build(micropost_params) if @micropost.save flash[:success] = "Micropost created!" redirect_to @micropost else @feed_items = current_user.feed.paginate(page: params[:page]) render 'static_pages/home' end end def destroy @micropost.destroy flash[:success] = "Micropost deleted" redirect_to request.referrer || root_url end def show @micropost = Micropost.find_by(id: params[:id]) @comments = @micropost.comments end private def micropost_params params.require(:micropost).permit(:content,:picture) end def correct_user @micropost = current_user.microposts.find_by(id: params[:id]) redirect_to root_url if @micropost.nil? end end

_micropost.html

<li id="micropost-<%= micropost.id %>" class="col-md-4 plus-border"> <%= link_to gravatar_for(micropost.user, size: 50), micropost.user %> <span class="user"><%= link_to micropost.user.name, micropost.user %></span> <span class="content"> <%= link_to micropost_path(micropost), {remote: true, class: "no-line"} do %> <%= micropost.content %> <%= image_tag micropost.picture.url ,{class: "image-size"} if micropost.picture? %> <% end %> <div id="micropost-modal" class="modal fade" tabindex="-1" role="dialog" aria-hidden="true"> </div> </span> <span class="timestamp"> Posted <%= time_ago_in_words(micropost.created_at) %> ago. <% if current_user?(micropost.user) %> <%= link_to "delete", micropost, method: :delete, data: { confirm: "You sure?" } %> <% end %> </span> <% if Like.find_by(user_id: current_user.id, micropost_id: micropost.id) %> <%= link_to("/likes/#{micropost.id}/destroy",{method: "post"}) do %> <i class="fas fa-heart"></i> <% end %> <% else %> <%= link_to("/likes/#{micropost.id}/create",{method: "post"}) do %> <i class="far fa-heart"></i> <% end %> <% end %> <%= Like.where(micropost_id: micropost.id).count %> <div class="comment-form"> <% if logged_in? %> <%= form_tag("/microposts/#{micropost.id}/comments", {method: :post}) do %> <textarea name="text" placeholder="Are you comment?" row="2" cols="30"></textarea> <input type="submit" value="SENT"> <% end %> <% end %> </div> </li>

試したこと

・springの再起動
・'carrierwave''mini_magick' 'fog'のバージョン指定なしでのbundle install

補足情報(FW/ツールのバージョンなど)

元々問題なく動いていたのですが、こちらのコードをgithubに一度pushし、
新たに別の環境でpullしたところ、動かなくなってしまいました。

初の質問となりますが、ご教授いただけると幸いです。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問