如何确保我没有在控制器中写入:@feedback.errors.add并从视图中的区域设置收到正确的错误消息



我的问题:输出错误消息验证表单。

我可以输出这个帮助控制器和模型:@feedback.errors.add:电子邮件,t('mongoid.errors.models.modern.feedback.attributes.email.invalid')但当我写的时候:

@feedback.errors.add :email, :invalid

我得到的输出"无效",而不是区域设置消息:"电子邮件格式无效"

如何使控制器中没有关于它的代码我的视图输出区域设置错误改为"无效"?

如何确保我没有在控制器中写入:@feedback.errors.add并且从视图中的区域设置收到了正确的错误消息?

不要在控制器中写入验证。只有在特定情况下,您通常应该在模型中编写这些验证。

应用程序/模型/反馈.rb

class Feedback < ActiveRecord::Base
  validates :email, format: { with: /A([a-z0-9+_-]+)(.[a-z0-9+_-]+)*@([a-z0-9-]+.)+[a-z]{2,6}z/ix }
end

默认情况下,上面验证的错误消息映射到区域设置消息:

mongoid.errors.models.feedback.attributes.email.invalid

或者如果使用活动记录:

activerecord.errors.models.feedback.attributes.email.invalid

有关详细信息,请参阅此处的映射文档。

请注意,在文档中,:format映射到:invalid键。

现在,您可以通过更新区域设置文件来自定义错误消息:

config/locates/en.yml(示例)

en:
  mongoid:
    errors:
      models:
        feedback:
          attributes:
            email:
              invalid: "Email address provided is invalid."

实现后,您不需要在控制器中写入@feedback.errors.add

最新更新