Ruby - 如何获取视图中的assotiative哈希值?

时间:2016-04-22 06:59:24

标签: ruby-on-rails ruby

我是红宝石的新手。现在我正在做一个小项目。但是我无法从哈希值中获取用户数据。这是我的编码 -

@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]那个人也没有工作。空白的消息来了。

感谢您的回答。

8 个答案:

答案 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 %>

带循环的解决方案