[Rails][Ruby] Rails2.0系で scaffold 日本語化までをやってみる
移転しました。
scaffold
参考URL
http://d.hatena.ne.jp/idesaku/20071211/1197386955
scaffold 作成
personというテーブルのscaffoldを作成する
以下参考URL引用
Rails 1.2であれば、まずはmigrationファイルを作ってDBにmigrateし、その後でおもむろにscaffold生成を行うところである。しかし、Rails 2.0ではここでいきなりscaffoldの生成を始める。 オプションとして与えているname:stringとage:integerに注目。従来はscaffoldジェネレータが勝手にDBのスキーマ情報を参照して表示・編集するフィールドを定めていたが、今回はスキーマを作る前にジェネレータを使うので、それができない。従って、modelのどのフィールドを対象とするのか、プログラマが明示的に指定する必要がある。これを指定しないと、何も表示せず何も編集できない退屈なscaffoldが作られてしまう。また、migrationファイルもこのパラメータに従って作られている。
$ ruby script/generate scaffold person name:string age:integer
テストデータ作成
$ ruby script/console Loading development environment (Rails 2.0.1) >> 10.times do ?> Person.create(:name => "Miku Hatsune", :age => 16) >> end => 10 >> quit
日本語化
参考URL
http://hidekazu.dhs1.sst.ne.jp/pukiwiki/Ruby%20on%20Rails.html
各項目のバリデータメッセージ
class Person < ActiveRecord::Base validates_presence_of :name, :message=>"が空の状態で保存することは出来ません。"
バリデータ表示時の項目名も日本語化
gettext使う。
これはいろいろな場面で日本語化する時に使える。
$ sudo gem install gettext config/environment.rb ----- ■最初に以下を追加 $KCODE='u' # u=utf s=Shift_JIS, e=EUC-JP require 'jcode' ■(Rails-2.1以降の場合) 2.1以降の場合は、require 'gettext/rails'を呼ぶのではなく、config.gemを使います。 Rails::Initializer.run do |config| : : config.gem "gettext", :lib => "gettext/rails" end ----- app/controllers/application.rb ----- class ApplicationController < ActionController::Base : require 'gettext/rails' # ←これ追加しないとrakeできないときがある? init_gettext "hogedom" : end ----- lib/tasks/gettext.rake ----- desc "Update pot/po files." task :updatepo do require 'gettext/utils' GetText::ErbParser.init(:extnames => ['.rhtml', '.erb']) GetText.update_pofiles( "hogedom", #<<<<<<テキストドメインの名前 Dir.glob("{app,config,components,lib}/**/*.{rb,rhtml,rjs,erb}"), "hogedom 1.0.0") #バージョン end desc "Create mo-files" task :makemo do require 'gettext/utils' GetText.create_mofiles(true, "po", "locale") end ----- $ rake updatepo poディレクトリが作成され、その中にテキストドメイン名のrailsproject.potができました。これをpo/jaディレクトリを作成して、そこにコピーして、railsproject.poにリネーム。 ----- #: app/models/person.rb:- msgid "person" msgstr "人物だよ" #: app/models/person.rb:- msgid "Person|Name" msgstr "名前だよ" ----- $ rake makemo
エラーメッセージのタイトル
以下はgettextインストールしてからじゃないと、機能しない。
class Person < ActiveRecord::Base set_error_message_title("入力した項目にエラーがあります。", "") set_error_message_explanation("以下項目にエラーがあります。", "")