这是我的代码:
<% @user.errors.each do |key, value| %>
<% puts 'key is' + key.to_s + 'value is ' + value.to_s %>
<% if key == 'email' %>
<% puts 'key is def email' %>
<% else %>
<% puts 'key is def not email' %>
<% end %>
<% end %>
输出:
key isemailvalue is can't be blank
key is def not email
key ispassword_confirmationvalue is doesn't match Password
key is def not email
key isprofile_namevalue is This is not valid.
key is def not email
问题在于它说“密钥是def而不是电子邮件”,即使它们的密钥肯定是“电子邮件”如何解决这个问题?感谢
答案 0 :(得分:3)
在Ruby中,字符串和符号之间存在差异。这两种类型都没有相同的比较(虽然它们看起来有点类似)。在您的情况下,键可能是符号,而不是字符串。
因此,您应该比较符号或首先将符号“转换”为字符串。
key = :email
key == 'email'
# => false
key.to_s == 'email'
# => true
key == :email
# => true