・チャットアプリにて動画投稿機能を実装していますが、メッセージ上に動画が反映されません。
gem 'carrierwave'のインストール済み、画像投稿機能も並行して行っています。
該当のソースコード
video_uploader.rb
1class VideoUploader < CarrierWave::Uploader::Base
2 def store_dir
3 "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
4 end
5 def extension_whitelist
6 %w(jpg jpeg gif png mp4 MOV wmv)
7 end
8end
9
message.rb
1class Message < ApplicationRecord
2 belongs_to :community
3 belongs_to :user
4
5 validates :content, presence: true, unless: :image?
6
7 mount_uploader :image, ImageUploader
8 mount_uploader :video, VideoUploader
9end
10
messages_controller.rb
1class MessagesController < ApplicationController
2 before_action :set_community
3
4 def index
5 @message = Message.new
6 @messages = @community.messages.includes(:user)
7 end
8
9 def create
10 @message = @community.messages.new(message_params)
11 if @message.save
12 redirect_to community_messages_path(@community), notice: 'メッセージが送信されました'
13 else
14 @messages = @community.messages.includes(:user)
15 flash.now[:alert] = 'メッセージを入力してください。'
16 render :index
17 end
18 end
19
20 private
21
22 def message_params
23 params.require(:message).permit(:content, :image, :video).merge(user_id: current_user.id)
24 end
25
26 def set_community
27 @community = Community.find(params[:community_id])
28 end
29end
30
message.html.haml
1.message
2 .upperMessage
3 .upperMessage__userName
4 = message.user.name
5 .upperMessage__date
6 = message.created_at.strftime("%Y年%m月%d日 %H時%M分")
7 .lowerMessage
8 - if message.content.present?
9 %p.lowerMessage__content
10 = message.content
11 = image_tag message.image.url, class: 'lowerMessage__image' if message.image.present?
12 = video_tag message.video.url, class: 'lowerMessage__image' if message.video.present?
mainChat.html.haml
1.form
2 = form_for [@community, @message] do |f|
3 = f.text_area :content, placeholder: "", class:'form__message'
4 .form__mask
5 = f.label :image, class: 'form__mask__image' do
6 = icon('fas', 'image', class: 'icon')
7 = f.file_field :image, class: 'hidden'
8 = f.submit 'Send', class: 'form__submit'
試したこと
参考記事が少なく、画像に近いやり方で実装を行いました。
補足情報(FW/ツールのバージョンなど)
MacOS, Ruby on rails vesion 6