Rails 6.0でアプリを開発 基本の流れ⑬ 画像や動画投稿の設定
既にプロフ画像でActiveStrageを導入済みなので、記事投稿にそれを実装する。プラス動画投稿もしてみるメモ。(※この記事は中途半端になってます。修正予定)
実現したいこと
アプリケーションの記事投稿で画像、動画を扱う。そしてきれいに配置して表示する。
1)Postモデルの設定
今回は複数の画像を投稿できるようにする。
1つならhas_one_attached、複数ならhas_many_attached
2)投稿するためのフォームを作成
multiple: trueで複数の画像を投稿できるようになる。
3)ストロングパラメーターで画像に許可を出す。
4)登録した画像を表示する
5)画像をリサイズする
既にimage_processingをインストール済みなので
配置はできていないが制限は可能。
※以下、いったん手順を表示するが、動画をS3にアップまでは完了できるが再生までできていないのでそれは今後編集予定
6)動画をアップする
①has_one_attachedで記事が1つの動画を持てるようにする
②ストロングパラメーターにvideoを追加
③フォームに一旦、画像とは別にファイルフィールドを設定
④画像があるときは画像、動画があるときは動画を表示するように分岐
※S3には動画がアップされていることは確認したが下記のエラーで表示されない。
ActionView::Template::Error (The asset "" is not present in the asset pipeline.):
上記コードではその後、引数の値を調べるために<%= post.video.inspect %>を埋め込んだものです。引数の値は問題なさそうだが。。
⑤プレビューを作成するためにimage_tagに変更し
<%= image_tag post.video.preview(resize: "100x100>") %>
でプレビューを表示することも可能なのはチェック済み
⑥またffmpegをインストールしてみた
・Windowsにダウンロード→パスの設定→Gemファイルのインストール
・こちらの設定はまだ。
参考にさせていただいたサイト
carrierwaveで画像(リサイズ)と動画のアップロードを両立させる - Railsでwebサービスを作ってみる
Active StorageのVariantの指定方法いろいろ - Qiita
video_tagで横幅いっぱいに動画を挿入する方法 - Qiita
The asset "" is not present in the asset pipeline - Qiita
Active Storageを使用して添付ファイル(アップロード)を簡単に管理する
Ruby on Rails で動画をアップロード – CarrierWaveとFFmpeg | Developers.IO
↓ウィンドウズのインストールからパスを通すまでのやり方↓
【windows】FFmpegをインストールする手順|新卒エンジニアの開発日記