Ruby on rails can';t使用.each和ruby访问值

Ruby on rails can';t使用.each和ruby访问值,ruby-on-rails,ruby,arrays,foreach,ruby-on-rails-4,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 e

这是我的密码:

<% @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 is def not email”,即使他们的key肯定是“email”,我该如何解决这个问题?谢谢你,在Ruby中,字符串和符号是有区别的。这两种类型的比较并不相等(尽管它们通常看起来有点相似)。在您的例子中,键可能是一个符号,而不是字符串

因此,您应该将其与符号进行比较,或者首先将符号“转换”为字符串

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

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

key == :email
# => true

在Ruby中,字符串和符号之间存在差异。这两种类型的比较并不相等(尽管它们通常看起来有点相似)。在您的例子中,键可能是一个符号,而不是字符串

因此,您应该将其与符号进行比较,或者首先将符号“转换”为字符串

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

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

key == :email
# => true

在Ruby中,字符串和符号之间存在差异。这两种类型的比较并不相等(尽管它们通常看起来有点相似)。在您的例子中,键可能是一个符号,而不是字符串

因此,您应该将其与符号进行比较,或者首先将符号“转换”为字符串

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

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

key == :email
# => true

在Ruby中,字符串和符号之间存在差异。这两种类型的比较并不相等(尽管它们通常看起来有点相似)。在您的例子中,键可能是一个符号,而不是字符串

因此,您应该将其与符号进行比较,或者首先将符号“转换”为字符串

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

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

key == :email
# => true

不要使用
+
构建字符串。不要在ERb中使用
put
。你可以这样写:key is,value is。你不知道key是“email”;你只知道key.to_返回了“email”。向erb添加调试时,请使用
d
是检查值的辅助函数。这样,您将了解真正的键是什么。不要使用
+
构建字符串。不要在ERb中使用
put
。你可以这样写:key is,value is。你不知道key是“email”;你只知道key.to_返回了“email”。向erb添加调试时,请使用
d
是检查值的辅助函数。这样,您将了解真正的键是什么。不要使用
+
构建字符串。不要在ERb中使用
put
。你可以这样写:key is,value is。你不知道key是“email”;你只知道key.to_返回了“email”。向erb添加调试时,请使用
d
是检查值的辅助函数。这样,您将了解真正的键是什么。不要使用
+
构建字符串。不要在ERb中使用
put
。你可以这样写:key is,value is。你不知道key是“email”;你只知道key.to_返回了“email”。向erb添加调试时,请使用
d
是检查值的辅助函数。这样你就会知道真正的关键是什么。