carrierwaveのファイルのサイズ制限とエラーメッセージの日本語化。
前回の続きとして、cloud9上にCarierwaveを使ってアップロードした画像のサイズ制限をしたいと思います。
開発環境: Ruby on rails 5.1.4
画像のファイルサイズ制限は、Carrierwave1.0.0betaからsize_rangeメソッドがサポートされたので、アップローダーに追加するだけです。
1)アップローダーにsize_range追加。
今回の場合は、image_uploader.rbに 追加。
メソッドを追加して、指定したサイズをオーバーしたファイルをアップすると、validateが動きます。
2)エラーメッセージを国際化対応にする。
このままだと、エラーメッセージがImage File size should be less than 5 MBと英語表記なので、日本語に直したいと思います。
1)config/locales/application.rbに、config.i18n.default_localeを追加する。
2)日本語化に必要なファイルのダウンロード。リンク先をコピペする。
https://raw.githubusercontent.com/svenfuchs/rails-i18n/master/rails/locale/ja.yml
3)config/localesにja.ymlを作成してファイルを配置する。
先ほどコピペしたファイルをja.ymlに設置する。
試しに空のフォームを送信すると、エラーメッセージが日本になっています。
Name、price、imageを入力して下さい、などエラーメッセージ内のモデルの属性名も変更したい場合は、先ほど設置したja.ymlにattributesを追加して変更します。
全部日本語に変更されました。
4)しかし、先ほどsize_rangeメソッドで設定したファイルサイズ以上のファイル(5MB以上)をアップロードすると、translation missing: ja.errors.messages.max_size_errorと表示されてしまいます。
config/localesにcarrierwave_ja.ymlファイルを作成する。作成したcarrierwave_ja.ymlにエラーメッセージを追加する。
再度ファイルをアップロードすると
carrierwaveのエラー部分も日本語に変更することができました。
以上、今回は、carrierwaveを使ってアップロードしたファイルのサイズ制限とエラーメッセージの日本語化をやってみました。
エラーメッセージの参照サイト: