我想显示没有型号名称,关联名称的错误消息。
例如,显示以下错误
Rooms events base To time must be after from tim
但我只想显示To time must be after from time
。
我的模型中的验证如下;
validate do |e|
if e.start_at.present? && e.end_at.present? and e.start_at > e.end_at
errors[:base] << "To time must be after from time"
end
end
如果您能告诉我如何仅显示To time must be after from time
。
application.html.erb
<% flash.each do |message_type, message| %>
<%= content_tag(:div, message, class: "alert alert-#{message_type}") %>
<% end %>
解决!
当我在en.yml
中设置以下内容时,它会起作用en:
errors:
format: "%{message}"
答案 0 :(得分:0)
在application.html上面添加以下内容
<% flash.each do |key, value| %>
<div class="alert alert-<%= key %>"><%= value %></div>
<% end %>
答案 1 :(得分:0)
errors
是一个哈希值。键是字段名称或:base
的名称,值是错误消息的数组作为字符串。
values
将返回没有键的值数组。因为此散列中的值是一个数组,所以我们最终得到一个数组数组:[['To time must be after from time']]
我使用flatten
将所有嵌套数组压缩到单个顶级数组。
join("\n")
将所有数组元素连接成一个字符串,用换行符分隔。
把它们放在一起就可以得到这样的结果:
flash[:error] = @object.errors.values.flatten.join("\n")
http://api.rubyonrails.org/classes/ActiveModel/Errors.html#method-i-values