我是红宝石的新手。现在我正在做一个小项目。但是我无法从哈希值中获取用户数据。这是我的编码 -
@user = {'name'=>"Chinmay", "email"=>"chixxx@gmail.com", "phone"=>"1234567890", "age"=>30}
上面的数组我试图在erb
文件中获取每个文件。
这是代码 -
Name : <%= @user.name %>
Email: <%= @user.email %>
Phone: <%= @user.phone %>
Age: <%= @user.age %> Years
我收到错误消息:
undefined method `name' for #<Hash:0x5e040d0>
请帮帮我。让我知道如何在不使用任何循环的情况下获取哈希值?
我再次尝试@user[:name]
那个人也没有工作。空白的消息来了。
感谢您的回答。
答案 0 :(得分:2)
而不是:
Name : <%= @user.name %>
Email: <%= @user.email %>
Phone: <%= @user.phone %>
Age: <%= @user.age %> Years
这样做:
Name : <%= @user['name'] %>
Email: <%= @user["email"] %>
Phone: <%= @user["phone"] %>
Age: <%= @user["age"] %> Years
答案 1 :(得分:2)
@user
是哈希,您应该按values
访问keys
,如下所示:
Name : <%= @user['name'] %>
Email: <%= @user['email'] %>
Phone: <%= @user['phone'] %>
Age: <%= @user['age'] %> Years
答案 2 :(得分:2)
访问哈希的正确语法是:
@user['name']
@user['email']
# [...]
答案 3 :(得分:2)
首先,您的@user
不是数组,而是hash
哈希基本上是一个键值对,在您的输入中,name
是一个键,Chinmay
是一个值,依此类推!
每个命名键都是一个符号,您可以使用该符号访问哈希值
因此,如果您想从哈希中访问该名称,<%= @user['name'] %>
就是您使用的方式。
这将完成你的工作!
Name : <%= @user['name'] %>
Email: <%= @user['email'] %>
Phone: <%= @user['phone'] %>
Age: <%= @user['age'] %> Years
答案 4 :(得分:2)
用户是哈希,而不是数组。
在Ruby中,您可以访问哈希属性,例如
@user['property']
干杯
答案 5 :(得分:1)
首先,你所谓的&#34;关联数组&#34;是一个哈希(参见文档here),你可以使用每个键作为数组索引来访问它的元素。
换句话说,你应该写:
Name : <%= @user['name'] %>
Email: <%= @user['email'] %>
Phone: <%= @user['phone'] %>
Age: <%= @user['age'] %> Years
答案 6 :(得分:1)
Sidenote解决方案:另一种方法是使用辉煌的Hashie::Mash
:
控制器中的某个地方:
require 'hashie/mash'
@huser = Hashie::Mash.new @user
Name : <%= @huser.name %>
Email: <%= @huser.email %>
Phone: <%= @huser.phone %>
Age: <%= @huser.age %> Years
这似乎是一种矫枉过正,但有时它确实有帮助。
答案 7 :(得分:1)
<% @yourhash.map do |k, v| %>
<%= k.capitalize %>:
<%= p v %><br>
<% end %>
带循环的解决方案