是否有任何(简单)方法可以控制模型错误在视图中出现的顺序?订购规则似乎没有任何帮助。
答案 0 :(得分:3)
使用error_message_on
代替error_messages
获取单个属性的消息。
<div class="errorMessages">
<% %{name title description}.each do |att| %>
<%= f.error_message_on att, :css_class => "error" %>
<% end %>
</div>
答案 1 :(得分:2)
在2.3.6中,验证消息将按照您在代码
中声明的顺序显示答案 2 :(得分:0)
这是一个答案(基本上是我自己的笔记),使用Baldu的答案。这会将attribute_names按字母顺序排列:
<% if @model.errors.length>0 %>
<div class="errorExplanation">
<h3>There were problems with the following fields:</h3><ul>
<% @model.attribute_names.each do |attribute| %>
<% if !@model.errors[attribute].blank? %>
<li><%= f.error_message_on attribute, Model.human_attribute_name(attribute)+ " ", :style=>"display:inline" %></li>
<% end %>
</ul>
<% end %>
</div>
<% end %>
当然,您可以将其进一步参数化为例如。我可能会这样做:))
答案 3 :(得分:0)
我在铁轨(grails)的groovy中有同样的问题。在代码中更改它不会改变任何东西,上面的答案也不适用于我。这就是我最终解决问题的方法。团队创建了一个自定义标签,用于排序/订购grails错误消息。
def renderOrderedErrors = { attrs, body ->
def bean = attrs.bean
def fields = attrs.fields
fields.each { out << g.renderErrors(bean: bean, field:it) }
}
这就是你如何使用它:
<g:if test="${totalRating.hasErrors() || rating.hasErrors()}">
<div class="errors">
<g:if test="${totalRating.hasErrors()}"><g:renderOrderedErrors bean="${totalRating}" as="list" fields="${['totalEffectiveDate','awardedDisability']}"/></g:if>
<g:if test="${rating.hasErrors()}"><g:renderOrderedErrors bean="${rating}" as="list" fields="${['ratingStatus','ratingIssue','disability','effectiveDate','ratingType','socDate','nodDate','ssocDate','form9Date','six46Date','remandDate']}"/></g:if>//this is the way you want to order the fields in the form
</div>
</g:if>