やっぱり忘れないようにいろいろ書いておいた方がいいかなー。
ということでかなり前に使ったpaperclipについても書いておきます。
まずはプロジェクト作成。
rails new paperclip-sample -d mysql
rake db:create
which convert # 無かったら次でインストール
brew install imagemagick
paperclipをインストール
gem 'paperclip'
機能を試すだけなのでscaffoldで。
rails g scaffold user
userモデルにavatarというカラムを割り当てます。このカラムにpaperclipでアップロードした画像を入れますよー。
rails g paperclip user avatar
rake db:migrate
Userモデルにpaperclipの設定を書く。 avatarカラムはUserモデルにあるのでUserモデルに設定を書きます。
class User < ActiveRecord::Base # photoをattachファイルとする。stylesで画像サイズを定義できる has_attached_file :avatar, styles: { medium: "300x300>", thumb: "100x100>" } # ファイルの拡張子を指定(これがないとエラーが発生する) validates_attachment :avatar, content_type: { content_type: ["image/jpg", "image/jpeg", "image/png", "image/gif"] } end
画像を投稿できるようにnew.html.erbをいじる
<h1>New User</h1> <%= form_for(@user) do |f| %> <%= f.file_field :avatar %> <% end %>
createアクションもいじる
def create User.create(create_params) redirect_to action: 'index' end private def create_params params.require(:user).permit(:avatar) end
これでいける。
あとは表示するindex.html.erbをいじる。
<%= @users.each do |user| %> <%= image_tag(user.avatar.url(:medium)) %> <% end %>
表示完了。