Ruby on rails 開発備忘録

Rails、テック関連の備忘録として。躓きとか疑問を中心に。

carrierwaveのファイルのサイズ制限とエラーメッセージの日本語化。

前回の続きとして、cloud9上にCarierwaveを使ってアップロードした画像のサイズ制限をしたいと思います。

開発環境: Ruby on rails 5.1.4 

画像のファイルサイズ制限は、Carrierwave1.0.0betaからsize_rangeメソッドがサポートされたので、アップローダーに追加するだけです。

 

github.com

  

1)アップローダーにsize_range追加。

今回の場合は、image_uploader.rbに 追加。

f:id:Arthurxxx:20180308162006p:plain

メソッドを追加して、指定したサイズをオーバーしたファイルをアップすると、validateが動きます。

f:id:Arthurxxx:20180308162143p:plain2)エラーメッセージを国際化対応にする。

このままだと、エラーメッセージがImage File size should be less than 5 MBと英語表記なので、日本語に直したいと思います。

 

1)config/locales/application.rbに、config.i18n.default_localeを追加する。

f:id:Arthurxxx:20180308213834p:plain

2)日本語化に必要なファイルのダウンロード。リンク先をコピペする。

https://raw.githubusercontent.com/svenfuchs/rails-i18n/master/rails/locale/ja.yml

3)config/localesにja.ymlを作成してファイルを配置する。

先ほどコピペしたファイルをja.ymlに設置する。

f:id:Arthurxxx:20180308215526p:plain

試しに空のフォームを送信すると、エラーメッセージが日本になっています。

f:id:Arthurxxx:20180308220054p:plain

Name、price、imageを入力して下さい、などエラーメッセージ内のモデルの属性名も変更したい場合は、先ほど設置したja.ymlattributesを追加して変更します。

f:id:Arthurxxx:20180308220748p:plain

全部日本語に変更されました。

f:id:Arthurxxx:20180308220844p:plain

4)しかし、先ほどsize_rangeメソッドで設定したファイルサイズ以上のファイル(5MB以上)をアップロードすると、translation missing: ja.errors.messages.max_size_errorと表示されてしまいます。

f:id:Arthurxxx:20180308221236p:plain

config/localesにcarrierwave_ja.ymlファイルを作成する。作成したcarrierwave_ja.ymlにエラーメッセージを追加する。

f:id:Arthurxxx:20180308222147p:plain

再度ファイルをアップロードすると

f:id:Arthurxxx:20180308222418p:plain

carrierwaveのエラー部分も日本語に変更することができました。

以上、今回は、carrierwaveを使ってアップロードしたファイルのサイズ制限とエラーメッセージの日本語化をやってみました。

 

 エラーメッセージの参照サイト:

qiita.com