从rails数组中获取特定值

时间:2013-04-14 06:00:06

标签: ruby-on-rails arrays ruby-on-rails-3 loops

我想我有一个正确的数组用于rails?

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

我想知道如何通过循环显示某些部分。例如,我如何仅显示applename

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

这只显示整个@lv消息,不仅显示applename。然后我希望能够只获取特定值的标记值,所以如果我需要获得apple的标记值,它应该只显示tagsred我如何用rails做到这一点?

谢谢!

1 个答案:

答案 0 :(得分:1)

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

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

修改

这也是对你在问题中的评论的回应。 key最终只是哈希值的applename部分。 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] ...等。

让我知道这不是你要问的。