Ruby on rails 循环遍历数组的最佳方法

Ruby on rails 循环遍历数组的最佳方法,ruby-on-rails,Ruby On Rails,我的控制器将此数组传递给视图: @ipd = Ipdw.connection.select_all("select * from [My Preferences]") 这是我的视图代码: <h1>Hello, Rails</h1> <body> <% @ipd.each do |ip| %> <p><%= ip %></p> <% end %> </body> 我想在表格中显

我的控制器将此数组传递给视图:

@ipd = Ipdw.connection.select_all("select * from [My Preferences]")
这是我的视图代码:

<h1>Hello, Rails</h1>
<body>

 <% @ipd.each do |ip| %>
 <p><%= ip %></p>
 <% end %>

</body>

我想在表格中显示
“用户名”
“字段名”
。如何在数组中循环以仅显示可读内容中的这些列?

类似于:

<h1>Hello, Rails</h1>
<body>

 <% @ipd.each do |ip| %>
  <p>
    <% ["Username", "Field Name"].each do |k| %>
      <%= ip[k] %>
    <% end %>
  </p>
 <% end %>

</body>
这样,您就可以在控制器中决定需要哪些字段(以及顺序),而不必使用html.erb文件

如果您想稍微修饰一下这些标签名称,您可以在控制器中执行以下操作:

@label_mapping = {"Username"=>"User Name", "Field Name"=>"Field Name"}
然后:

<h1>Hello, Rails</h1>
<body>

  <table>
    <tr>
      <% @field_names.each do |field_name| %>
        <th>
          <%= label_mapping[field_name] %>
        </th>
      <% end %>
    </tr>
    <% @ipd.each do |ip| %>
      <tr>
        <% @field_names.each do |field_name| %>
          <td>
            <%= ip[field_name] %>
          </td>
        <% end %>
      </tr>
    <% end %>
  </table>

</body>
你好,Rails
您的查询似乎返回了一个哈希数组。只需使用键选择您感兴趣的值:

<% @ipd.each do |ip| %>
  <p>
    <%= ip['Username'] %><br />
    <%= ip['Field Name'] %>
  </p>
<% end %>




可能有两种方法:

首先,您有一个此类数据的模型:

<% @ipd.each do |ip| %>
<p><%= ip.username %></p>
<% end %>

第二声: 从外部数据库获取的数据集看起来像一个散列。因此,请尝试以下方法:

<% @ipd.each do |ip| %>
<p><%= ip["username"] %></p>
<% end %>

我认为第二种是你需要的;)


从某种角度来看,我不会使用更短的循环方式,因为代码的可读性会降低:
abc.each{letter}
  • {letter}
  • “}

    您是在问如何用html编写表还是从返回的哈希中获取值?
    <% @ipd.each do |ip| %>
      <p>
        <%= ip['Username'] %><br />
        <%= ip['Field Name'] %>
      </p>
    <% end %>
    
    <% @ipd.each do |ip| %>
    <p><%= ip.username %></p>
    <% end %>
    
    <% @ipd.each do |ip| %>
    <p><%= ip["username"] %></p>
    <% end %>