我的问题:输出错误消息验证表单。
我可以输出这个帮助控制器和模型:@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