画像アップロード(CarrierWave)

CarrierWaveというgemを使うと、簡単に画像のアップロードが実装できます。

エディタでGemfileを編集します。この行の後に

# bundle exec rake doc:rails generates the API under doc/api.
gem 'sdoc', '~> 0.4.0', group: :doc

この1行を追加します。

gem 'carrierwave'

bundle install を実行してgemをインストールします。ターミナルで以下のコマンドを実行します。

bundle install

画像をアップロードするためのコードを生成します。ターミナルで以下のコマンドを実行します。

rails generate uploader Image

エディタでapp/models/photo.rbを編集します。この行の後に

class Photo < ActiveRecord::Base

この行を追加します。

  mount_uploader :image, ImageUploader

画像ファイルをアップロードできるようにします。エディタでapp/views/photos/_form.html.erbを編集します。

この行を

<%= f.text_field :image %>

このように変更します。

<%= f.file_field :image %>

画像を表示できるようにします。エディタでapp/views/photos/show.html.erbを編集します。

この行を

<%= @photo.image %>

このように変更します。

<%= image_tag(@photo.image_url) if @photo.image.present? %>

サーバーを再起動します。サーバーすでに起動している場合は Ctrl + c で停止してください。

サーバーを起動してください。ターミナルで以下のコマンドを実行します。

rails s

サーバーが起動したら、写真のアップロードを試してみてください。