Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RubyonRails:使用特定索引遍历数组?_Ruby On Rails_Ruby_Arrays_Loops - Fatal编程技术网

Ruby on rails RubyonRails:使用特定索引遍历数组?

Ruby on rails RubyonRails:使用特定索引遍历数组?,ruby-on-rails,ruby,arrays,loops,Ruby On Rails,Ruby,Arrays,Loops,如果我有特定的索引,如何遍历数组 @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 di

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

@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

然后这应该是苹果的钥匙。我想从
apple
获取值,它应该是
round
red
。我在上述代码中的逻辑是错误的,但我试图找出调用正确键进行迭代的语法是什么?

这没有意义
@lv
是一个映射,而不是数组。在地图上使用数字索引很奇怪

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

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

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

这样做似乎需要付出很多努力。为什么不更改视图以便选择密钥名称:

http://example.com/?value=apple
而不是
http://example.com?value=0

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

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

然后只需在视图中遍历
@tags
,或者尝试对标签列表执行任何操作。

这没有任何意义
@lv
是一个映射,而不是数组。在地图上使用数字索引很奇怪。@DaveNewton我对rails不太熟悉,当我将它用作变量或某种类型时,它似乎起作用了,只是去掉@更好吗?它是实例还是局部变量与问题无关。嗨,Andrew,请告诉我你正在努力实现什么,我可以建议一个替代的解决方案。你是如何生成@lv的,为什么。。。为什么你要在URL中传递一个索引,而不是实际需要的键(如apple)可以给出另一个例子?@andrewliu是否“正确”取决于你实际在做什么,为什么?我不知道。你能解释一下你的代码是怎么做的吗?对不起,我对Rubyon真的很陌生Rails@andrewliu按表达式分解:它使用参数的整数值作为数组索引,放入散列的键中以获取键,然后使用该键从散列中获取值,然后迭代散列值,假设为数组。我尝试测试了
put@lv[params['apple']]
但没有任何结果,
也没有放置@lv[params[0]]
。获取类似于
参数[0]
的内容的正确语法是什么?我想根据索引输出值。因此,如果我想从苹果公司获取值,我需要在某个地方传递
0
。我该怎么做?