digifacture

Railsとかデジモノとか色々勉強した事とか作った事とか気になった事とか

modelに日本語書くとエラーになるときの対策

環境

Rails 3.2.9

ruby 1.9.3p194

 

たとえばバリデーションのメッセージに日本語で書くとする。

class Machine < ActiveRecord::Base
validates_presence_of :rental_no, :message =>"ダメだよ"
attr_accessible :detail, :hikitori, :kaishu, :location_id, :machine_name_id, :motikomi, :rental_no, :shukko, :used
end 

するともれなく「We're sorry, but something went wrong.」と表示されてしまう。

そんなときはmodelの冒頭に「# encoding: UTF-8」を書き加えてあげると解決する。

# encoding: UTF-8
class Machine < ActiveRecord::Base
validates_presence_of :rental_no, :message =>"ダメだよ"
attr_accessible :detail, :hikitori, :kaishu, :location_id, :machine_name_id, :motikomi, :rental_no, :shukko, :used
end

なんでmodelだけこんなんなんだろ?

 

参考:


Rails の models クラスに日本語を記述するとエラーになる: ある SE のつぶやき

 

あとRails全体でエラーメッセージ日本語化

rails 3 エラーメッセージ日本語化のメモ

rails-i18n/ja.yml at master · svenfuchs/rails-i18n · GitHub