1

Rails 4 で使用carrierwave 0.9.0し、カスタム エラー メッセージを作成しようとしています。いくつかの検索を行った後、私はこの答えを見つけました:

en:
  errors:
    messages:
      extension_white_list_error: 'My Custom Message'

上記のコードを追加してこれを試しましたconfig/locales/en.ymlが、何も変わりませんでした。エラーメッセージはまだ同じです。

github hereにも同じ問題がありますが、答えはありません。この問題はRails 4に固有のものだと思いますが、Rails 4を使用するときに同じ問題がありますか?

4

3 に答える 3

2

i18n ファイルに関して、Rails 4.0 の読み込みに問題があるようです

理想的には、3+ に従って I18n ロード パスはどうあるべきか

/Users/joshianiket22/.rvm/gems/ruby-1.9.3-p327@rails3_2/gems/activesupport-4.0.0/lib/active_support/locale/en.yml
/Users/joshianiket22/.rvm/gems/ruby-1.9.3-p327@rails3_2/gems/activemodel-4.0.0/lib/active_model/locale/en.yml
/Users/joshianiket22/.rvm/gems/ruby-1.9.3-p327@rails3_2/gems/activerecord-4.0.0/lib/active_record/locale/en.yml
/Users/joshianiket22/.rvm/gems/ruby-1.9.3-p327@rails3_2/gems/actionpack-4.0.0/lib/action_view/locale/en.yml
/Users/joshianiket22/.rvm/gems/ruby-1.9.3-p327@rails3_2/gems/carrierwave-0.9.0/lib/carrierwave/locale/en.yml
/Users/joshianiket22/carrierwave_tester/config/locales/en.yml

Rails 4.0 で見られるもの

/Users/joshianiket22/.rvm/gems/ruby-1.9.3-p327@rails3_2/gems/activesupport-3.2.11/lib/active_support/locale/en.yml
/Users/joshianiket22/.rvm/gems/ruby-1.9.3-p327@rails3_2/gems/activemodel-3.2.11/lib/active_model/locale/en.yml
/Users/joshianiket22/.rvm/gems/ruby-1.9.3-p327@rails3_2/gems/activerecord-3.2.11/lib/active_record/locale/en.yml
/Users/joshianiket22/.rvm/gems/ruby-1.9.3-p327@rails3_2/gems/actionpack-3.2.11/lib/action_view/locale/en.yml
/Users/joshianiket22/workspace/zenjavi/carrierwave_tester/config/locales/en.yml
/Users/joshianiket22/.rvm/gems/ruby-1.9.3-p327@rails3_2/gems/carrierwave-0.9.0/lib/carrierwave/validations/../locale/en.yml

アプリケーション固有のen.ymlの後にcarrierwave en.ymlがロードされ、問題があるという2つの違いを明確に見ることができます

Railsアプリケーションでload_pathsを変更し、load_pathsの順序を期待どおりに変更する方法がない限り、簡単な方法はないことをお勧めします

ここでプルリクエストを出しました。それを決定するために、完全にCarrierwaveの人たちに畏敬の念を抱いています

ハッキーソリューション:

以前はこの解決策を提供することを控えていましたが、それでもここでそれほど悪いことをしたい場合はどうすればよいですか

libディレクトリ(auto_load_i18n.rbとしましょう)にファイルを定義し、libパスをautoloadに割り当てます(application.rb内)

config.autoload_paths += %w(#{config.root}/lib)

auto_load_i18n.rbにこう書く

I18n.load_path.delete(Rails.root.join("config/locales/en.yml").to_s)
I18n.load_path << Rails.root.join("config/locales/en.yml").to_s

そして、あなたの一番上にあるlibファイルを必要としますapplication_controller.rb

require 'auto_load_i18n'
class ApplicationController < ActionController::Base

そして、私はすべてがうまくいくと思います

これで、私がこれを可能な解決策として差し控えていた理由を理解できます:)

この助けを願っています

于 2013-09-29T11:04:51.043 に答える
1

これで修正されました。

https://github.com/carrierwaveuploader/carrierwave/pull/1264

お待ちいただきありがとうございます。

于 2013-11-10T18:44:23.667 に答える
0

Rails 5.1 を使用しています ファイルを作成しconfig/locales/carrierwave.ar.ymlて書きました

ar:
  carrierwave:
  errors:
    messages:
      min_size_error: "حجم الصورة لابد أن يكون أكبر من %{min_size}"
      max_size_error: "حجم الصورة لابد أن يكون أقل من %{max_size}"
      ....

このファイルを見ることができます:)

于 2017-05-25T14:23:33.583 に答える