Ruby on rails 在rails的视图中使用哈希

Ruby on rails 在rails的视图中使用哈希,ruby-on-rails,hash,Ruby On Rails,Hash,嗨 我在我的模型用户中使用了一个常量散列 作为 我的用户={ :firstname=>“First Name”, :lastname=>“lastname”, :指定=>“我的指定” } 现在在我的视图中,我有一个循环,其中包含所有字段名(firstname、lastname、designation) 因此,我尝试将此字段名作为 <% @userfields.sort.each do |userfield| %> <tr> &l

我在我的模型用户中使用了一个常量散列 作为

我的用户={ :firstname=>“First Name”, :lastname=>“lastname”, :指定=>“我的指定” }

现在在我的视图中,我有一个循环,其中包含所有字段名(firstname、lastname、designation)

因此,我尝试将此字段名作为

    <% @userfields.sort.each do |userfield| %>
        <tr>
          <td>

         <% @userkey=userfield%>
         <%= @userkey%> # gives the exact field names
          <%= User::MYUSER[:@userkey]%> # this doesnt gives anything
           <td></tr>
     <%end%>

#给出确切的字段名
#这没什么用

如何纠正这个问题??给出一些建议当您使用变量作为散列的索引时,不应指定冒号,正确的语法是:

User::MYUSER[@userkey]

取决于@userkey中的值

但是,您也可以像下面这样直接循环MYUSER常量:

<% User::MYUSER.keys.each do |key| %>
  <tr>
    <td>Key: <%= key %></td>
    <td>Value: <%=  User::MYUSER[key] %></td>
  </tr>
<% end %>

关键:
价值:

使用变量作为散列的索引时,不应指定冒号,正确的语法为:

User::MYUSER[@userkey]

取决于@userkey中的值

但是,您也可以像下面这样直接循环MYUSER常量:

<% User::MYUSER.keys.each do |key| %>
  <tr>
    <td>Key: <%= key %></td>
    <td>Value: <%=  User::MYUSER[key] %></td>
  </tr>
<% end %>

关键:
价值:

我同意@DanneManne的回答。但更具体地说,您可以使用每个_对迭代记录:


关键:
价值:

我同意@DanneManne的回答。但更具体地说,您可以使用每个_对迭代记录:


关键:
价值:

您尚未指定@userfields的内容,因此我无法确定问题出在哪里。但如果@userfields是[:firstname,:lastname,:designation],那么User::MYUSER[@userkey]应该可以工作。如果@userfields是[“firstname”、“lastname”、“designation”],那么User::MYUSER[@userkey.to_sym]应该可以工作,因为字符串值被转换为符号。但是,如果@userfields是[“Firstname”、“Lastname”、“Designation”],那么您还必须首先将字符串小写,如User::MYUSER[@userkey.downcase.to_sym]。@DanneManna-My@userfield的值是[“f i r s t n a m e”、“l a s t n a m e”、“d e s i g n a t i o n”]。如何删除它们之间的空格并使用如果您真的想使用该数组,那么这可能会起作用:User::MYUSER[@userkey.gsub(“,”)。您尚未指定@userfields的内容,因此我无法确定问题出在哪里。但如果@userfields是[:firstname,:lastname,:designation],那么User::MYUSER[@userkey]应该可以工作。如果@userfields是[“firstname”、“lastname”、“designation”],那么User::MYUSER[@userkey.to_sym]应该可以工作,因为字符串值被转换为符号。但是,如果@userfields是[“Firstname”、“Lastname”、“Designation”],那么您还必须首先将字符串小写,如User::MYUSER[@userkey.downcase.to_sym]。@DanneManna-My@userfield的值是[“f i r s t n a m e”、“l a s t n a m e”、“d e s i g n a t i o n”]。如何删除它们之间的空格并使用如果您真的想使用该数组,那么这可能会起作用:User::MYUSER[@userkey.gsub(“,”).tosym]