いままではRailsに内蔵しているScaffoldを使用してCRUDプログラムを構築してきましたが、さらに機能アップされた、また見栄えのよいActiveScaffoldを取り上げましょう。
1.プロジェクトの生成
・NetBeansで[新規プロジェクト]を選択します。
[ステップ1]プロジェクトを選択
カテゴリ(C): Ruby
プロジェクト(P): Ruby on Rails アプリケーション
[ステップ2]名前と場所
プロジェクト名(N): proj501
プロジェクトの場所(l): D:\Rails_Projects
プロジェクトフォルダ(D): D:\Rails_Projects\proj501
Rubyプラットフォーム(P): Ruby 1.8.7-p72
サーバー(S): WEBrick
[ステップ3]データベース構成
データベースアダプタ(P): mysql
データベース名(D): proj501_development
ユーザー名(M): root
パスワード(W): *******
[ステップ4]Railsのインストール
Railsのバージョン: 2.2.2
・proj501が生成されます。
2.日本語環境の設定
・/config/environment.rbの編集
・/app/controllers/application.rbの編集
3.データベースの作成
4.モデルの作成
住所録テーブルAddressを作成します。
・NetBeansで[生成]を選択
・Railsジェネレータでmodelを作成
ジェネレート(G):model
引数(A):Address (モデル名の先頭文字は大文字とすること)
・テーブル作成プログラムの実装
/db/miggrate/yyyymmddhhmmss_create_addresses.rbの編集
/db/miggrate/yyyymmddhhmmss_create_addresses.rb |
class CreateAddresses < ActiveRecord::Migration
def self.up
create_table :addresses do |t|
t.string :namae
t.string :yubin, :limit => 8
t.string :jusho
t.string :denwa, :limit=>20
t.timestamps
end
end
def self.down
drop_table :addresses
end
end
|
5.マイグレーションの実行
[データベースマイグレーション]より[現在のバージョンへ]を選択する
6.ActiveScaffoldのインストール
コマンド プロンプト |
C:\Rails_Project\proj501>
ruby script/plugin install git://github.com/activescaffold/active_scaffold.git -r rails-2.2
Initialized empty Git repository in c:/Rails_Project/shopping/vender/pluging/activescaf
fold/active_scaffold/.git/
remote: Counting objects: 214, done.
remote: Compressing objects: 100% (193/193), done.
remote: Total 214 (delta 25), reused 136 (delta 15)
Receiving objects: 100% (214/214), 143.21 KiB, done.
Resolving deltas: 100% (25/25), done.
From git://github.com/activescaffold/active_scaffold
* branch rails-2.2 -> FETCH_HEAD
|
(注)インストールが出来ない場合は、直接github.comからダウンロードしてください。・IE以外のブラウザを使いhttp://activescaffold.com/でメインのホームページを呼び出します。
・githubの画面となるので、download(7)のタブをクリックします。
・ダウンロードファイル一覧から2009-06-05日付rails-2.2_22...のzip形式を選択し、
適当な場所にダウンロードします。
・次のファイルを適当な場所に解凍します。
activescaffold-active_scaffold-65e477753a74ef433688fb8010976fa52960d54e.zip
・解凍したファイルを/vender/plugins/フォルダにコピーしactive_scaffoldと名前を変更します。
7.日本語リソースファイルの生成
(1) i18nによりリソースファイルの作成
コマンド プロンプト |
C:\Rails_Project\proj501>ruby script/generate i18n ja
debug updating environment.rb ...
debug fetching ja.yml fro rails-i18n repository...
exists config/locales
update config/environment.rb
create config/locales/ja.yml
debug 1 models found.
debug 0 translat on keys found in v ews.
debug translating activerecord.models.address ...
debug translating activerecord.attributes.address.namae ...
debug translating activerecord.attributes.address.yubin ...
debug translating activerecord.attributes.address.jusho ...
debug translating activerecord.attributes.address.denwa ...
debug took 1.047 secs to translate.
create config/locales/translation_ja.yml
|
(2) /config/locales/translation_jp.ymlの更新
まずモデルに関する日本語化を行います。
/config/locales/translation_jp.yml |
ja:
activerecord:
models:
address: "住所録" attributes:
address:
namae: "名前"
yubin: "郵便番号"
jusho: "住所"
denwa: "電話"
|
(3) layoutファイルの作成
/app/views/layouts/activescaffold.html.erbを作成します。
(4) addressesコントローラおよびヘルパーの作成
NetBeansで生成を選択
ジェネレータ(G): controller
名前(N): addresses
(5) addressesコントローラの修正
/app/controls/addresses_controller.rb |
class AddressesController < ApplicationController
layout 'activescaffold'
active_scaffold :address do |config|
config.columns = [:namae, :yubin, :jusho, :denwa, :created_at]
config.show.columns = [:id, :namae, :yubin, :jusho, :denwa, :created_at, :updated_at]
config.list.per_page = 10
config.list.sorting = [:yubin => :ASC]
end
end
|
(6) addressesヘルパーの修正
/app/controls/addresses_helper.rb |
# Methods added to this helper will be available to all templates in the application.
module ApplicationHelper
def created_at_column(record)
record[:created_at].strftime("%Y-%m-%d")
end
def updated_at_column(record)
record[:updated_at].strftime("%Y-%m-%d")
end def created_at_form_column(record, name)
input(:record, :created_at, :name=>name, :order=>[:year,:month,:day], :use_month_numbers=>true)
end
def updated_at_form_column(record, name)
input(:record, :updated_at, :name=>name, :order=>[:year,:month,:day], :use_month_numbers=>true)
end
end
|
(7) 動作確認
(8) 日本語化されていない項目の追加
モデルの日本語化で定義していなかった項目を追加します。
/app/controls/addresses_helper.rb |
ja:
activerecord:
models:
address: "住所録" attributes:
address:
id: "ID"
namae: "名前"
yubin: "郵便番号"
jusho: "住所"
denwa: "電話"
created_at: "作成日"
updated_at: "更新日"
|
(9) 動作確認
created_atも日本語化されました。
(10) ActiveScaffoldメニューの日本語化
/config/locales/translation_jp.ymlの最後尾に追加します。
/config/locales/translation_jp.yml に 追加 |
active_scaffold:
add: "追加"
add_existing: "Add Existing"
are_you_sure: "本当によろしいですか?"
cancel: "キャンセル"
click_to_edit: "Click to edit"
close: "閉じる"
create: "登録"
create_model: "新規登録"
create_another: "Create Another"
created_model: "Created {{model}}"
create_new: "新規追加"
customize: "Customize"
delete: "削除"
deleted_model: "Deleted {{model}}"
delimiter: "Delimiter"
download: "Download"
edit: "編集"
export: "Export"
filtered: "(検索結果)"
found: "件ありました"
hide: "隠す"
live_search: "リアルタイム検索"
loading…: "Loading…"
nested_for_model: "{{nested_model}} for {{parent_model}}"
next: "次へ"
no_entries: "(登録されていません)"
omit_header: "Omit Header"
options: "Options"
pdf: "PDF"
previous: "前へ"
print: "印刷"
refresh: "再描画"
remove: "除外"
remove_file: "Remove or Replace file"
replace_with_new: "Replace With New"
revisions_for_model: "Revisions for {{model}}"
reset: "リセット"
saving…: "保存中…"
search: "検索"
search_terms: "検索ワード"
_select_: "- select -"
show: "表示"
show_model: "照会中....."
_to_ : " to "
update: "更新"
update_model: "編集中....."
udated_model: "更新しました"
percentage_example: "Ex. 10%"
usa_phone_example: "Ex. 111-333-4444"
usa_money_example: "Ex. 1,333"
usa_zip_example: "Ex. 88888-3333"
ssn_example: "Ex. 555-22-3333" # error_messages
internal_error: "Request Failed (code 500, Internal Error)"
version_inconsistency: "Version inconsistency - this record has been modified since you started editing it."
|
(11) 動作確認
(一覧の画面)
(新規追加の画面)