2

現在、フォームのフィールドを空白のままにすると、en.yml ファイルに書き込まれたエラー メッセージが表示されます。このエラー メッセージをモデルで上書きするにはどうすればよいですか?

class Contact < MailForm::Base
  attribute :name,      :validate => true
  attribute :email,     :validate => /\A([\w\.%\+\-]+)@([\w\-]+\.)+([\w]{2,})\z/i
  attribute :message,   :validate => true
  attribute :nickname,  :captcha  => true

これは私が name 属性に対して試したものですが、en.yml ファイルに書かれているエラー メッセージがまだ表示されます。アプリケーションの別の部分であるため、エラー メッセージを en.yml から変更することはできません。

  validates :name, presence: { message: "Can't be blank" }

これがメッセージを上書きしない理由はありますか?

4

3 に答える 3

0

メッセージを内部ハッシュにネストする必要はありません。検証に関するメッセージの構文は次のとおりです。

attribute :name, validate: true

あまりエレガントではありませんが、エラー メッセージを手動で設定できます。

contact = Contact.new
contact.valid?  # => false
contact.errors[:name] = "Can't be blank"  # => Will add "Can't be blank to the list of errors associated with  name"

または、元のエラーを置き換えたい場合:

contact.errors.set(:name, "Can't be blank")
于 2016-05-12T18:22:50.110 に答える