1

我有一个代码,可以在其中打印所有键和哈希值。我想让它可配置,以便它只打印所需的键而不是所有键。假设我有键 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%>
4

3 回答 3

2

你也可以这样做

<% [1,3,8,15,18].each do |key|; value = order_item[key] %>
于 2013-03-01T10:01:04.610 回答
2

尝试:

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

然后你可以打电话:

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

或者

您可以使用:

hash.slice(1,3,8,15,18)
 # => { '1' => 'value1', '3' => 'value2', '8' => 'value3', '15' => 'value4', '18' => 'value5' }
于 2013-03-01T10:11:20.527 回答
2

有这样的东西:

<% order_item.select{|k,_| [1,3,8,15,18].include?(k)}.each do |key,value| %>
于 2013-03-01T09:52:22.553 回答