Ruby on Rails 2.0 で ActiveScaffoldを使ってみる
Railsが新しくなったらしいので試してみる。ActiveScaffoldもRailsの2.0に対応しているんだかいないんだか情報が錯綜してるし。とりあえずよくある名刺管理アプリの作成。
環境はWinXP、Ruby 1.8.6、gem 0.9.5。
2.SQLiteのインストール
今回初めてSQLite使ってみたんですが、個人用にローカルPCで使うならMySQLよりも手軽で良い感じ。
http://www.sqlite.org/download.html から
sqlite-3_5_4.zip (207.94 KiB)
sqlitedll-3_5_4.zip (206.33 KiB)
を落として、展開後パスの通ったフォルダにコピー。
Rubyから使うためのライブラリもインストール
> gem install sqlite3-ruby
4.ActiveScaffoldプラグインのインストール
ActiveScaffoldを入れるとデフォルトでも十分かっこいいViewになるので、自分の場合たいてい入れるようにしてます。
普通にActiveScaffoldを入れようとするとVer1.0.1がインストールされてしまい、これだとRails2.0に対応してないとのこと。以下のように1.1.0 RC1を入れる必要があります。
> ruby script/plugin install http://activescaffold.googlecode.com/svn/tags/1.1.0_rc1
vendor\plugins\1.1.0_rc1 を vendor\plugins\active_scaffold にリネーム。
5.Modelの生成
> ruby script/generate model card
6.DBの生成
db\migrate\001_create_cards.rb 編集。
Rails2.0の新機能でセクシー(?)に書いてみた。
class CreateCards < ActiveRecord::Migration def self.up create_table :cards do |t| t.primary_key :id t.string :name, :null => false, :default => '' t.string :kana, :post, :default => '' t.string :name, :mail, :url, :default => '' t.string :phone, :cellular, :fax, :default => '' t.string :zip, :address, :memo, :default => '' t.integer :priority, :default => 3 t.timestamps end end def self.down drop_table :cards end end
生成実行。
> rake db:migrate
7.Controllerの生成
> ruby script/generate controller card
app\controllers\card_controller.rb 編集
class CardController < ApplicationController active_scaffold layout "card" end
8.レイアウトの作成
app\views\layoutsに新規ファイルcard.html.erb作成。以下の内容にする。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="content-type" content="text/html;charset=UTF-8" /> <title>Cards: <%= controller.action_name %></title> <%= javascript_include_tag :defaults %> <%= active_scaffold_includes %> </head> <body> <p style="color: green"><%= flash[:notice] %></p> <%= yield %> </body> </html>