TOPシステム開発> 実装
Ruby on Rails入門
Ruby on Rails入門

第6回:プラグインでさらに生産性アップ
著者:DTS  五座 淳一   2006/6/28
前のページ  1  2  3   4  次のページ
実装

   File Columnプラグインを使ってアプリケーション「アドレス帳」に写真を追加する手順を表2に示します。
  1. contactsテーブルに画像ファイル名を格納するカラムを追加する
  2. ContactモデルにFile Columnプラグインを関連付ける
  3. アドレスカード情報を入力するためのフォームに写真を指定するためのフィールドを追加する
  4. ビューに写真を表示するためのタグを追加する

表2:写真を追加する手順

   まずcontactsテーブルに、画像ファイル名を保存するためのカラムimageを追加します。コマンドプロンプトを開いて、リスト3のように入力してください。またmysqlコマンドのパスは環境にあわせて読み替えてください。

リスト3:カラムimageを追加する
C:\> C:\InstantRails\mysql\bin\mysql -u root
mysql> USE AddressBook_development
mysql> ALTER TABLE `addressbook_development`.`contacts` ADD COLUMN `image` VARCHAR(255) NOT NULL DEFAULT '' AFTER `email`;
mysql> exit
C:\> exit


ソースコードの修正

   残りはソースコードの修正になります。まず1つ目の修正はモデルです。ContactモデルにFile Columnプラグインを関連付けます。第1引数に画像ファイル名を格納するカラム名を指定し、第2引数には64×48サイズと160×120サイズにリサイズした画像を格納することを示しています。

   file_columnというメソッドを呼び出していますが、これはFile Columnプラグインを導入したことによってRails提供クラスに動的に追加されたメソッドの1つです。

リスト4:app/models/contact.rb
class Contact < ActiveRecord::Base
   file_column :image, :magick => {
      :versions => { :thumb => "64x48", :medium => "160x120" }}

end

   次にアドレスカード情報を入力するためのフォームに写真を指定するためのフィールドを「app/view/contacts/_form.rhtml」の最後に追加します(リスト5)。

リスト5:app/view/contacts/_form.rhtml
<p><label for="contact_image">Image</label><br/>
<%= file_column_field 'contact', 'image' %></p>

   Scaffoldで生成した新規作成画面、編集画面のフォームは共通化されており、このファイルを修正するだけで、新規作成画面、編集画面のフォームに写真を指定するためのフィールドを追加することが可能です。

   あわせて写真をアップロードするため、両画面の「start_form_tag」にmaultipartを指定します(リスト6、リスト7)。

リスト6:app/view/contacts/new.rhtml
<%= start_form_tag({:action => 'create'}, {:multipart => true}) %>

リスト7:app/view/contacts/edit.rhtml
<%= start_form_tag({:action => 'update', :id => @contact}, {:multipart => true}) %>

前のページ  1  2  3   4  次のページ


株式会社DTS  五座 淳一氏
著者プロフィール
株式会社DTS  五座 淳一
技術部所属。入社以来、交換機や携帯電話、Webシステムなど様々な開発を担当する。Ruby on Rails上に構築したオープンソースのCMS「Rubricks」(http://rubricks.org/)のコミッタ。


INDEX
第6回:プラグインでさらに生産性アップ
  プラグインとは
  アプリケーション「アドレス帳」に写真を追加する
実装
  写真の表示