我正在尝试使用索引键对象显示关联错误,格式如下:
:errors=>{
:questions=>{
0=>{:title=>"can't be blank"},
1=>{:title=>"can't be blank"}
}
}
Rails 5提供了一种显示错误索引的方法,但使用的格式如下:
questions[0].title,
questions[1].title
我的解决方案有点讨厌,正在解析像这样的错误响应
def parse_errors
{
errors: {
questions: @post.questions.enum_for(:each_with_index).collect { |question, index|
{
index => question.errors.messages
} unless question.valid?
}.inject({}, :merge).transform_values {|v| v.transform_values &:first }
}.merge!(@post.errors.messages)
}
end
我得到了
{
:errors=>{
:questions=>{
0=>{
:title=>"can't be blank"
},
1=>{
:title=>"can't be blank"
}
},
:"questions.title"=>["can't be blank"],
:title=>["can't be blank"]
}
}
但我希望以下结果省略默认问题错误消息:“questions.title”=> [“不能为空”], 像这样:
{
:errors=>{
:questions=>{
0=>{
:title=>"can't be blank"
},
1=>{
:title=>"can't be blank"
}
},
:title=>["can't be blank"]
}
}
那么,有没有办法清理这段代码,以便为预期格式的帖子和问题显示错误?
感谢。
答案 0 :(得分:0)
解析嵌套表单关联错误
不确定,但您可以通过以下方式删除默认错误消息:
self.errors.clear
清除所有错误。self.errors.add
将所有错误消息放回正确/所需的位置。