Ruby on rails 仅打印选择键,而不是所有键、值对?

Ruby on rails 仅打印选择键,而不是所有键、值对?,ruby-on-rails,ruby,ruby-on-rails-3,hash,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|%>

我有一个代码,在其中我打印所有键和散列值。我想让它可配置,所以它不打印所有的钥匙,只打印所需的钥匙。假设我有钥匙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%>

订单项目
:  

类似于:

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

类似于:

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

您也可以这样做

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

您也可以这样做

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

试试:

然后你可以打电话:

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' }
尝试:

然后你可以打电话:

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' }

注意,在ruby 1.9.3中,它返回一个散列(),但在ruby 1.8.7中,它返回一个数组(),在应用
|键,值|
block@Arindam它实际上在
1.8.7
中工作。它被转换为一个
数组
,但它们将作为对传递,因为select生成了一个数组数组-一个对数组-是的,这很好。我个人不喜欢这种代码到处游荡
由于特定的本地实现而作为散列传递的数组
?这不是个好习惯。因此指出它,以便无辜者在某个时间点不会被指控:-)注意,在ruby 1.9.3中,它返回一个哈希(),但在ruby 1.8.7中,它返回一个数组(),需要在应用
|键,值|
block@Arindam它实际上在
1.8.7
中工作。它被转换为一个
数组
,但它们将作为对传递,因为select生成了一个数组数组-一个对数组-是的,这很好。我个人不喜欢这种代码到处游荡
由于特定的本地实现而作为散列传递的数组
?这不是个好习惯。因此指出,为了使无辜者在某个时间点不会被定罪:-)您想要保留的密钥来自某个序列,或者可以是用户提供的任何一组值?@Arindam-密钥可以是用户提供的任何一组值。这些键实际上对应于表中的列。要保留的键来自某个序列,或者可以是用户提供的任何一组值?@Arindam-键可以是用户提供的任何一组值。这些键实际上对应于表中的列。他正在工作。干杯他正在工作。干杯