簡體   English   中英

Ruby on Rails:使用特定索引迭代數組?

[英]Ruby on Rails: iterating through array with specific index?

如果我有特定的索引,如何遍歷數組?

@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 我想從apple獲得應該是roundred 我在上面的代碼中的邏輯是錯誤的,但我想弄清楚調用正確的迭代鍵的語法是什么?

這毫無意義; @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

我還建議使用至少一個中間變量來清理該表達式。

這似乎需要付出很多努力才能使它以這種方式工作。 為什么不更改視圖以便您可以選擇密鑰名稱:

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

那么您可以將控制器代碼更改為:

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

然后在您的視圖中迭代@tags ,或者您嘗試使用標記列表執行的任何其他操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM