carrierwaveで画像アップロード

carrierwaveとは?

画像をアップロードするためのgem。

 

 

carrierwave使うための準備

  1. gemファイルに以下のように追記し、bundle install。

    gem 'carrierwave' 

  2. ターミナルで、rails g uploader imageコマンド実行。
    すると、以下のファイルが生成される。
    app/uploaders/image_uploader.rb

 

 

carrierwaveの使い方

  1. 関連づけるモデルファイルに以下を追記。

    #message.rb
    class Message < ActiveRecord::Base
        mount_uploader :image, ImageUploader
    end 

  2. ビューファイルのフォームに以下を追記

    #message.html.erb

    <%= form_for(@message) do |f| %>

    省略

    <div class="field">
        <%= f.label :image %>
        <%= f.file_field :image %>
    </div>

    <div class="action">

        <%= f.submit %>

    </div>

    <% end %>

     

  3. コントローラーで保存できるようにストロングパラメーターの設定を以下のようにする。

    # message_controller.rb
    省略
    private
    def message_params
    params.require(:message).permit(:image, :text)
    end

     

 

これで、public/uploads/message/image 配下に画像が保存されていくようになります!