これまでに作った機能について簡単にまとめていく。
今回は、
carrierwaveを使った複数の画像アップロード
使用モデル
Blogモデル
カラム | データ型 | |
---|---|---|
1 | title | string |
2 | content | text |
3 | images | json |
補足
画像を配列で受け取るためデータ型をjsonにする
ImageMagickのインストール
既にある場合は省略
1 |
$ brew install imagemagick |
インストールされているか確認したい場合は、以下のコマンドで確認
1 |
$ convert -version |
Gemの導入
1 2 |
gem 'carrierwave' gem 'mini_magick' |
bundle installの実行
carrierwaveはアップロード用
mini_magickはサイズ調整用
アップローダーの作成
1 |
$ rails g uploader Image |
Imageは、今回のアップローダー名
アップローダーをモデルに紐付け
app/models/blog.rb
1 2 3 |
class Blog < ApplicationRecord mount_uploaders :image, ImageUploader end |
注意
画像を一枚ずつアップロードする場合はmount_uploader
だがそのままではエラーが出るので必ずmount_uploadersにする
フォームを追加
1 2 |
<%= f.label :images %> <%= f.file_field :images, multiple: true %> |
ストロングパラメータの設定
1 2 3 |
def blog_params params.require(:blog).permit(:title, :content, {images: []}) end |
画像を表示する場合
1 2 3 |
<% @blog.images.each do |blog| %> <%= image_tag (blog.url) %> <% end %> |
以上で作成完了