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