0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Carrierwaveの実装 

Posted at

はじめに

画像登録の実装の際に、carrierwaveを用いて実装しました。
その時に調べたこと感じたことの記録です。

結論

実装自体は単純で、使い勝手が良い。
ドラッグ&ドロップなどにも対応可能。

手順

1. インストール

ターミナル上で以下のコードを実行し、最新版のcarrierwaveをインストール
$ gem install carrierwave
Gemfile内に以下を追加
gem 'carrierwave', '~> 2.0'

2. 実装

  1. uploaderの実装
    以下のコードを実行して、uploaderを実装する。
$ bundle exec rails generate uploader ###

###の部分はimageavatorなど、その時のカラムに合わせて変えてください。
そうすると

app/uploaders/###_uploader.rb

というファイルが作成されている。
中身は「保存先の指定」「アップロードする画像の種類」などの指定ができる。

  1. uploaderを作成したら、モデルとの関連付け
    以下のコードを関連付けしたいモデルに追記する。
    (今回で言うと、document_images.rb)
mount_uploader :carrierwave用に作ったカラム名, carrierwaveの設定ファイルのクラス名
  1. ファイルのアップロード
    viewで画像を登録するのに、以下をviewのファイル書く。
    今回はnew.html.erbにコードを書いてます。
new.html.erb
<%= f.label :image %>
<%= f.file_field :image %>

注意点

複数枚の画像を登録する場合、まとめたファイルがdbに登録されます。
そのため、1枚1枚の写真を取り出すには別のメソッドを使用する必要があるそうです。
【Rails】画像を複数投稿したい
参考サイトにもありますが、アンチメソッドのようです・・・
また、

mount_uploader :carrierwave用に作ったカラム名, carrierwaveの設定ファイルのクラス名

mount_uploaderを複数形にすると、carrierwave用に作ったカラムを配列形式で扱わないといけなくなるので、タイポ要注意です!

さいごに

上記内容で、一通り実装は出来ます。
が、アンチメソッドを使った実装はまだしていないので、挙動は不明です。
ドキュメント自体に画像が登録されるかについても、show.html.erbにコードを書いていないので、別の記事で書きます!

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?