我想我有一个正确的数组用于rails?
@lv = {'apple' => ['tags', 'red'], 'name' => ['more tags', 'taggers']}
我想知道如何通过循环显示某些部分。例如,我如何仅显示apple
和name
?
<% @lv.each do |me| %>
<%= me %>
<% end %>
这只显示整个@lv消息,不仅显示apple
和name
。然后我希望能够只获取特定值的标记值,所以如果我需要获得apple
的标记值,它应该只显示tags
和red
我如何用rails做到这一点?
谢谢!
答案 0 :(得分:1)
您的@lv
变量是一个哈希值,因此使用.each
只会给出一个组合键值对作为块参数(这就是me
最终的结果)。相反,使用each_pair
;这样你就可以获得键和值的分离变量。像这样:
<% @lv.each_pair do |key, value| %>
<%= key %>
<% end %>
修改强>
这也是对你在问题中的评论的回应。 key
最终只是哈希值的apple
或name
部分。 value
参数是键指向的任何内容,在这种情况下是实际的项目数组(我认为这是您正在调用的标记)。例如,您的哈希包含两个键值对,当我们迭代它们时,在第一个循环中key
= apple
和value
= ['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]
...等。
让我知道这不是你要问的。