我想獲得驗證消息的順序與我們的窗體上的順序相同。我可以在Rails中確定驗證錯誤消息的順序嗎?
我們有三類:
class User
accepts_nested_attributes_for :pledges
end
class Pledge
accepts_nested_attributes_for :companies
validates_presence_of :pledgor_surname
end
class Company
validates_presence_of :name
end
在一種形式中,我們可能不得不採取屬性爲所有三個,所以我們得到PARAMS如下所示:
{"pledges_attributes"=>
{"0"=>
{"pledgor_surname"=>"",
"id"=>"230",
"companies_attributes"=>
{"0"=>
{"id"=>"125",
"name"=>""
}
}
}
}
}
當我打電話@user.update(params)
,它沒有按照我的預期進行驗證。但errors#full_messages
名單如下:
["Company name can't be blank", "Pledgor surname can't be blank"]`
而且錯誤出現在相同的順序在頁面上。
缺乏對消息對象的黑客攻擊,有沒有辦法告訴Rails爲了放置消息,或至少應該首先發布出錯錯誤和公司錯誤?
的#full_messages接通差錯到一個數組,但在此之前,他們是在哈希狀物體(見'錯誤[]中的部分'[這裏](http://guides.rubyonrails.org/active_record_validations。 HTML#驗證 - 概述 - 錯誤))。因此,您可以使用'errors.values_at(:name,:surname).flatten'來獲取與提供的鍵相同順序的錯誤。 –
請注意,這是真正舊的Rails 3.x風格的驗證。 4+使用導軌'驗證:pledgor_surname,存在:作爲TRUE'每[文檔】(http://guides.rubyonrails.org/active_record_validations.html)。 – tadman