我正在使用Rails 5.在我的模型中,如果我的某个字段无效,我会设置错误...
errors.add(:my_field, 'The field is not in the correct format')
然后在我看来,我会像这样显示错误......
<% if !@user.errors[:my_field].empty? %><span class="profileError"> <%= @user.errors[:my_field] %></span><% end %>
显示错误时,显示为
["The field is not in the correct format"]
如何摆脱错误周围出现的括号?这似乎是一个非常简单的问题,但我不知道那些东西是如何在那里蔓延的。
答案 0 :(得分:2)
@user.errors[:my_field]
是一组错误消息。
要显示所有错误,您可以执行...
@user.errors[:my_field].join(', ')
这将显示您所期望的单个错误,以及用逗号分隔的多个错误。
e.g。
['not an integer', 'not less than ten']
变为
not an integer, not less than ten
和
['not an integer']
变为
not an integer
答案 1 :(得分:1)
在Rails中,任何给定属性的错误都是一个数组,因为属性可能会失败多次验证。
通常使用@user.errors.full_messages
然后迭代所有错误消息:
<% if @user.errors.any? %>
<ul>
<%= @user.errors.full_messages.each do |m| %>
<li><%= m %></li>
<% end %>
</ul>
<% end %>
在您的情况下,您可以迭代特定的密钥:
<% @user.errors[:my_field].each do |msg| %>
<span class="profileError"><%= msg %></span>
<% end if @user.errors[:my_field].any? %>
根据所需的输出,您也可以使用full_messages_for(:my_field)
。有关更多示例,请参阅ActiveModel::Errors的文档。