carrierwaveで画像アップロード
carrierwaveとは?
画像をアップロードするためのgem。
carrierwave使うための準備
- gemファイルに以下のように追記し、bundle install。
gem 'carrierwave'
- ターミナルで、rails g uploader imageコマンド実行。
すると、以下のファイルが生成される。app/uploaders/image_uploader.rb
carrierwaveの使い方
- 関連づけるモデルファイルに以下を追記。
#message.rb
class Message < ActiveRecord::Base
mount_uploader :image, ImageUploader
end - ビューファイルのフォームに以下を追記
#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 %>
- コントローラーで保存できるようにストロングパラメーターの設定を以下のようにする。
# message_controller.rb
省略
private
def message_params
params.require(:message).permit(:image, :text)
end
これで、public/uploads/message/image 配下に画像が保存されていくようになります!