1
我有一個國際化的文件爲:軌道4 - 從自定義驗證傳遞變量本地化
en: activemodel: errors: messages: email_address: "%{email} is not a valid email"
而且我對電子郵件中的自定義的驗證:
class EmailFormatValidator < ActiveModel::EachValidator def validate_each record, attribute, value record.errors.add attribute, (options[:message] || :email_address) unless value =~ /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/ end end
如何傳遞%{email}
從驗證器到i18n yml文件的值?我不斷收到此錯誤:
missing interpolation argument :email in "%{email} is not a valid email" ({:model=>"Signup", :attribute=>"Email", :value=>"sdsdfsdf"} given)
感謝。發佈這個問題後,我很快就明白了這一點。但我得到這個字符串'電子郵件sdsdfsdf不是一個有效的電子郵件',你可以看到這個字符串以'Email'開頭,我不想要這個字符串,這甚至不是yml中字符串的一部分。我想字符串應該是'sdsdfsdf不是一個有效的電子郵件' – JVK
@JVK我已經更新了我的答案,以一種方式如何更改整個應用程序的錯誤消息格式。你不能在[source](https://github.com/rails/rails/blob/master/activemodel/lib/active_model/errors.rb#L370-L379)中查看一個屬性。 – nemesv
謝謝@nemesv我明白了,並選擇了你的答案。不幸的是,這將影響驗證中的所有錯誤消息,所以我可能不得不妥協,並讓我的錯誤消息看起來像只有:( – JVK