0

我想我有一个正确的轨道阵列?

@lv = {'apple' => ['tags', 'red'], 'name' => ['more tags', 'taggers']}

我想知道如何通过循环显示某些部分。例如,我将如何只显示appleand name

<% @lv.each do |me| %>
   <%= me %>
<% end %>

这只会显示整个 @lv 消息,而不仅仅是显示appleand name。然后我希望能够只获取特定值的标记值,所以说如果我需要获取 的标记值apple,它应该只显示tags以及red如何使用 rails 执行此操作?

谢谢!

4

1 回答 1

1

你的@lv变量是一个哈希,所以 using.each只会给你一个组合的键值对作为块参数(这就是me最终的结果)。相反,使用each_pair; 这样,您可以获得键和值的分隔变量。像这样:

<% @lv.each_pair do |key, value| %>
    <%= key %>
<% end %>

编辑

这也是对您在问题中的评论的回应。keywill 最终只是你的哈希的, appleor name, 一部分。该value参数是键所指向的任何内容,在这种情况下是实际的项目数组(我认为这就是您所说的标签)。例如,您的哈希包含两个键值对,当我们迭代它们时,在第一个循环中key=applevalue= ['tags', 'red']。要输出该值数组,您可以使用几种不同的方式:

循环遍历标签数组

<% @lv.each_pair do |key, value| %>
    <%= key %>
    <%= value.each do |tag| %>
        <%= tag %>
    <%= end %>
<% end %>

作为逗号分隔的字符串:

....looping code
    <%= value.join(", ") %>

或者直接以数组表示法将其吐出:

....looping code
    <%= value %>

或者,如果您只想要值数组中的特定元素,那么是的,您可以这样做value[0],或者value[1]...等。

让我知道这是否不是您要问的。

于 2013-04-14T06:06:53.673 回答