Ruby on rails Rails-分析嵌套表单关联错误

Ruby on rails Rails-分析嵌套表单关联错误,ruby-on-rails,ruby,ruby-on-rails-5,Ruby On Rails,Ruby,Ruby On Rails 5,我尝试使用以下格式的索引键对象显示关联错误: :errors=>{ :questions=>{ 0=>{:title=>"can't be blank"}, 1=>{:title=>"can't be blank"} } } Rails 5提供了一种显示错误索引的方法,但使用的格式如下: questions[0].title, questions[1].title 我的解决方案有点糟糕,就是像这样解析错误响应 def pars

我尝试使用以下格式的索引键对象显示关联错误:

: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"]
  }
}
那么,有没有办法清理这些代码,以便以预期的格式显示帖子和问题的错误

谢谢

分析嵌套表单关联错误

不确定,但您可以通过以下方式删除默认错误消息:

  • 使用
    self.errors清除所有错误。清除
  • 使用
    self.errors.add
    将所有错误消息放回正确/所需的位置

  • @如果你对我的答案感到满意,那么就把它改正过来,投赞成票。