レイルに乗ってみた〜 目次
書籍『Rails of Ruby on Rails ~Case of LOCUSANDWONDERS.COM~』で勉強してみた(P83〜)
画像のアップロード FileColumnプラグイン
gitからインストール
script/plugin install git://github.com/tekin/file_column.git
removing: /Users/username/work/locus/vendor/plugins/file_column/.git Initialized empty Git repository in /Users/username/work/locus/vendor/plugins/file_column/.git/ remote: Counting objects: 33, done. remote: Compressing objects: 100% (29/29), done. remote: Total 33 (delta 3), reused 30 (delta 3) Receiving objects: 100% (33/33), 124.74 KiB | 118 KiB/s, done. Resolving deltas: 100% (3/3), done.
- ちなみに「script/plugin install http://opensvn.csie.org/rails_file_column/ plugins/file_column/trunk」でやったら失敗した(Plugin not found: 〜)
RMagickのイントール
FileColumnを使うにはRMagickとか必要らしい。さらにそれをインストールするのにX11.appも必要みたい。
sudo port install rb-rmagick
RMagickのイントール失敗の軌跡(一部抜粋)
- 『http://rmagick.rubyforge.org/install-osx.html』さんを参考に
- sudo port install tiff -macosx imagemagick +q8 +gs +wmf
- sudo gem install rmagick(で失敗。XFree86が無いよエラー?)
- sudo gem install rmagick
- それからsudo port install rb-rmagickしたら
- 『Please perform 'port clean ImageMagick' or specify the force option.』
- sudo port clean ImageMagick した
- MacPortsでダウンロード失敗するから、ひとつひとつ手動で...
- その他いろいろ(つдT)
テーブルにカラムを追加
script/generate migration add_image_to_entry image:string
exists db/migrate create db/migrate/20080909050558_add_image_to_entry.rb Loaded suite script/generate Started Finished in 0.000456 seconds. 0 tests, 0 assertions, 0 failures, 0 errors
ここでマイグレーション実行。
rake db:migrate
(in /Users/username/work/locus) == 20080909050558 AddImageToEntry: migrating ================================== -- add_column(:entries, :image, :string) -> 0.0223s == 20080909050558 AddImageToEntry: migrated (0.0227s) ========================= Loaded suite /opt/local/bin/rake Started Finished in 0.000673 seconds. 0 tests, 0 assertions, 0 failures, 0 errors
モデルの修正
app/models/entry.rbに一行追加
file_column :image, :magick => {:geometry => '458x360>'}
フォーム変更
app/views/entries/_form.html.erbに修正・追加
<% form_for(@entry, :html => {:multipart => true}) do |f| %> : <p> <%= f.label :image, '画像' %> <%= f.file_field :image %> </p>
ブラウザで確認