railsのviewをslimで書くためにやったこと。
slim-railsの導入
Gemfileにslimを入れてbundle install。既存のerbを変換するためにhtml2slimも同時に入れる。
gem 'slim-rails' group :development do gem 'html2slim' end
erb2slimを実行しようとしたが…
既存のerbをslimにしようとerb2slim
を実行したが、erb内で日本語文字を使用していたためエラー。
invalid byte sequence in US-ASCII (ArgumentError)
変換のときだけ日本語文字を省いてもいいが、同様の問題は今後も発生する可能性があるのでなるべくソース内に日本語文字を直書きしないようにするべくI18nを導入*1
I18nを導入
Gemを追加。
gem 'rails-i18n'
confg/application.rbでデフォルトのlocaleを指定。
config.i18n.default_locale = :ja
config/locale配下にymlを配置(view.ja.yml)
ja: users: index: name: 氏名
erb内からymlで指定した表記を呼び出す。
<%= I18n.t('.users.index.name') %> #=> 氏名
erb2slimを再実行
改めてerbをslimに変換する。-d
オプションは変換後に元のerbを削除するオプション。
bundle exec erb2slim app/views -d
変換後、上記のerb部分もきちんと変換された。
= I18n.t('.users.index.name')
まとめ
単にslimを入れるだけのはずがなぜか結構大仕事になっていた。 仕事で使ってるプロジェクトが、日本語しか使わないのにI18n使っててなんでなのかなぁと思ったけどこういう理由もあったりしたのかな。わからん。。。
*1:本来の目的ではないが勉強も兼ねて