勉強日
今日の作業
Railsについての学習
ActiveScaffold
GetText
調べたことのまとめ
ジェネレータとプラグイン
ジェネレータは静的であり、1度だけ実行されコードを生成する。
プラグインは動的であり、アプリケーションランタイムの一部として実行される。
Railsのscaffoldジェネレータは1度だけ実行され、モデルの中の現在のフィールドに基づいて静的なHTMLテンプレートを作成する。
列を追加したいときにはビューを再生成するか、手動でビューにフィールドを追加する必要がある。
それに対しプラグインは、ビューを実行時に生成する為モデルの変更は苦労なく行える。
ActiveScaffold
http://blog.codezine.jp/editor/2007/09/ruby_on_railsactivescaffold_1.php
このサイトを参考にActiveScaffoldを使ってみた。
mysql> create database bookmark_development default character set utf8;
bookmarkというRailsアプリを作り
environment.rbファイルに文字コードを指定
$KCODE = 'u' require 'jcode'
を追加。次はdatabase.ymlの設定
次に
bookmark>ruby script/generate model bookmark
でmodelファイルbookmarkの作成
migrationファイルを
class CreateBookmarks < ActiveRecord::Migration def self.up create_table :bookmarks do |t| t.column :title, :string t.column :url, :string t.column :created_at, :datetime t.column :updated_at, :datetime end end def self.down drop_table :bookmarks end end
こんな感じに記述し実行
次に
bookmark>ruby script/generate controller user
でuserコントローラ作成
次にActiveScaffoldをインストール
bookmark>ruby script/plugin install http://activescaffold.googlecode.com/svn/tags/active_scaffold
インストール後app/views/layoutsにactivescaffold.rhtmlを作り
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>ブックマーク管理</title> <%= javascript_include_tag :defaults %> <%= active_scaffold_includes %> </head> <body> <%= yield %> </body> </html>
こんな感じに記述。
次にscaffoldを実行するControllerであるUserControllerに
class UserController < ApplicationController active_scaffold :bookmark layout "activescaffold" end
を記述し完了。
サーバを起動しhttp://localhost:3000/userへ
英語でわかりづらいからUserControllerを
class UserController < ApplicationController layout "activescaffold" active_scaffold :bookmark do |config| config.label = "ブックマークテーブル" config.columns = [:title, :url, :created_at, :updated_at] list.columns.exclude :created_at list.sorting = {:title => 'DESC'} columns[:title].label = "タイトル" columns[:created_at].label = "作成日" columns[:updated_at].label = "更新日" end end
と記述。内容は
・config.label…テーブル名の表記を設定
・config.columns…表示するカラムを設定。また、この順番で表に表示されます。
・list.columns.exclude…表には表示しないカラム。created_atカラムを非表示にしてみました。
・list.sorting…デフォルトソート。複数指定できるようです。
・columns.[].label…カラムの表記を設定。
次に
/vendor/plugins/active_scaffold/lib/configのファイルの
「:label => 'Edit'」を「:label => '編集'」などに書き換えリンク名を日本語に。
Gettext
次にGettextを使ってみる。
http://rubist.blog77.fc2.com/blog-entry-74.html
を参考に。
$>gem install gettext
次に参考サイトのようにbookmarkモデルにバリデーションを追加
class Bookmark < ActiveRecord::Base #必須チェック validates_presence_of :title validates_presence_of :url #長さチェック validates_length_of :title, :maximum => 15 #形式チェック validates_format_of :url, :with => /^(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(([0-9]{1,5})?\/.*)?$/ix end
時間がなくなったため続きは明日。
今日の作業でScaffoldとActiveScaffoldの違いがわかった。
明日の作業
未定