仅打印选择键,而不是所有键,值对?

时间:2013-03-01 09:49:59

标签: ruby-on-rails ruby ruby-on-rails-3 hash

我有一个代码,其中我打印所有键和哈希值。我想让它可配置,以便它只打印所需的键而不是所有键。假设我有键k1,k2,k3 ... k20。我想要打印k1,k3,k8 .... k15,k18。什么是最好的方法呢?

这是相关的代码段 - :

   <%@order_items.each do |order_item|%>
        <h5>Order Item</h5>
        <%order_item.each do |key,value|%>

          <table cellspacing=2>

            <tr><td><%=key.capitalize%>: </td> <td><%= value %></td></tr>

          </table>
        <%end%>
      <%end%>

3 个答案:

答案 0 :(得分:2)

有类似的东西:

<% order_item.select{|k,_| [1,3,8,15,18].include?(k)}.each do |key,value| %>

答案 1 :(得分:2)

你也可以这样做

<% [1,3,8,15,18].each do |key|; value = order_item[key] %>

答案 2 :(得分:2)

尝试:

class Hash
  def select_keys(*args)
    select {|k,v| args.include?(k) }
  end
end

然后你可以打电话:

h.select_keys(1,3,8,15,18)

OR

你可以使用:

hash.slice(1,3,8,15,18)
 # => { '1' => 'value1', '3' => 'value2', '8' => 'value3', '15' => 'value4', '18' => 'value5' }