无法使用.each和ruby访问价值

时间:2014-01-05 21:18:19

标签: ruby-on-rails ruby arrays foreach ruby-on-rails-4

这是我的代码:

<% @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而不是电子邮件”,即使它们的密钥肯定是“电子邮件”如何解决这个问题?感谢

1 个答案:

答案 0 :(得分:3)

在Ruby中,字符串和符号之间存在差异。这两种类型都没有相同的比较(虽然它们看起来有点类似)。在您的情况下,键可能是符号,而不是字符串。

因此,您应该比较符号或首先将符号“转换”为字符串。

key = :email
key == 'email'
# => false

key.to_s == 'email'
# => true

key == :email
# => true