[英]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
獲得應該是round
和red
。 我在上面的代碼中的邏輯是錯誤的,但我想弄清楚調用正確的迭代鍵的語法是什么?
這毫無意義; @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.