我使用' nokogiri'其中包括从一些上传的xml中检查模式。我将打印出所有发生的错误:
xsd.validate(doc).each do |error|
flash[:error] = error.message
end
如果我这样做,我只会看到最后添加的错误,如果存在多个错误。
我发现也找到了一个类似的问题,关于这个问题rails-easy-way-to-add-more-than-one-flashnotice-at-a-time但是公认的解决方案对我有用。
由于
答案 0 :(得分:1)
将方法更改为
flash[:error] = xsd.validate(doc).map(&:message).to_sentence
<强>更新强>
使用br
标记分隔每个错误
flash[:error] = xsd.validate(doc).map(&:message).join('<br>').html_safe
答案 1 :(得分:0)
我发现也找到了一个关于这个问题的类似问题 rails-easy-way-to-to-more-than-one-flashnotice-at-time,但是 公认的解决方案对我有用。
以什么方式不适合你?
您可以添加自己的flash类型,如flash [:errors],并编写自己的帮助方法以方便使用。
def my_flash(type, message)
flash[type] ||= []
flash[type] += Array.wrap(message)
end
然后你可以使用一个数组或一个字符串作为消息,这样可以很容易地传入多个,就像这样。
my_flash :errors, "name cannot be blank"
my_flash :errors, ["age must be greater than 17", "phone number is invalid"]
p flash[:errors]
#=> ["name cannot be blank", "age must be greater than 17", "phone number is invalid"]