我的 Devise 注册页面上有一个嵌套表单。 我有一个通过角色模型链接到用户的公司模型。
有关相关文章,请参阅此处:如何在不通过表单传递数据的情况下更新嵌套资源
我可以设置我的验证等,它们工作得很好,但是当为嵌套资源显示错误消息时,它会变得丑陋 - 字面意思是:
例如,如果我提交一份空白表格,我会得到:
> Email can't be blank
> Password can't be blank
> Roles company name can't be blank
> Roles company address1 can't be blank
前两个是非嵌套表单元素,后两个是描述性的,但几乎不是用户友好的。 它们应该是"公司名称",并且"公司地址"不能为空等。
我可以在没有大量复杂代码的情况下更改它吗?
更新
我可能必须手动覆盖设计错误消息帮助程序:
https://github.com/plataformatec/devise/blob/master/app/helpers/devise_helper.rb
无论如何,我想清理格式。
更新 2
我做了一些挖掘,我发现了这个:
http://guides.rubyonrails.org/i18n.html#translations-for-active-record-models
从我收集的信息来看,我应该不能在我的 en.yml 中做到这一点:
en:
activerecord:
attributes:
user/role/company:
address1: "First Name"
name: "Company Name"
我试过了,但到目前为止没有运气。
更新 3
我挖得越多,发现的就越多。 这可能是最好的解决方案:
https://github.com/jeremydurham/custom-err-msg
此 gem(尽管多年未维护)允许您完全删除模型属性。 无论如何,我可能会走这条路,只定义自定义错误消息。
"custom-err-msg"Custom error Gem并不真正依赖于rails版本。因此,最好使用否则,您可以自己覆盖full_messages方法,或者在父模型本身中添加嵌套模型验证。