0

如果我有特定的索引,如何遍历数组?

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

if params[:value]
    @lv.each do |key, tags|
        if params[:value] == key
            tags.each_with_index do |tag, index|
                ... should display round and red?
            end
        end
    end
end

我有一个数组@lv,如果有与之关联的参数,我希望能够获取这些值。例子:

someURL.com/?value=0 然后这应该得到 key apple。我想得到apple应该是round和的值red。我在上述代码中的逻辑是错误的,但我试图弄清楚调用正确键进行迭代的语法是什么?

4

2 回答 2

1

这似乎需要付出很多努力才能使其以这种方式工作。为什么不更改视图以便您可以选择键名:

http://example.com/?value=apple代替http://example.com?value=0

然后您可以将控制器代码更改为:

@tags = @lv[params['value']]

然后只需在您的视图中迭代@tags,或者您尝试对标签列表执行的任何其他操作。

于 2013-04-14T21:24:09.063 回答
1

这没有任何意义;@lv是地图,而不是数组。在地图上使用数字索引很奇怪。

可以依赖 Ruby 1.9+ 中的插入顺序,因此@lv[@lv.keys[params[:value].to_i]]实际上会检索您想要的内容,但 IMO 它在语义上是粗略的。

@lv[@lv.keys[params[:value].to_i]].each_with_index do |tag, index|
  ...
end

我还建议使用至少一个中间变量来清理该表达式。

于 2013-04-14T20:08:20.707 回答