Ruby on rails 仅打印选择键,而不是所有键、值对?
我有一个代码,在其中我打印所有键和散列值。我想让它可配置,所以它不打印所有的钥匙,只打印所需的钥匙。假设我有钥匙k1,k2,k3…k20。我想打印k1,k3,k8…k15,k18。最好的办法是什么 这是相关的代码片段-: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|%>
<%@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-键可以是用户提供的任何一组值。这些键实际上对应于表中的列。他正在工作。干杯他正在工作。干杯