2014-02-11 55 views

回答

0

這是更好地使按鍵簡單,並按照約定。通過使所有的鍵小寫/小寫。如果你需要一個值,那麼你將這個變量變小,然後把它傳遞給哈希。

哈希:

params = {key: 'Hello', another_key: 'World'} 

然後你可以使用它像這樣:

params[var.downcase] 
+0

這聽起來像你說要添加已經以小寫字母的所有密鑰,但問題要求哈希已經由來自URL的軌道生成的情況......這意味着這不是一個選項! – Blake

+0

我明白問題在說什麼。我的答案仍然保持不變。作爲一名高級rails開發人員,我還沒有必要小寫一個uri,並且從他的examplehost local url中可以看出,他表示他正在做大寫。所以這個問題就像'我如何使用goto並且沒有獲得意大利麪代碼?'。答案是,不要使用goto。爲此,首先不要有大寫參數。 – sonnyhe2002

1

一種選擇將是params哈希錶轉換成一個它不區分大小寫處理密鑰的情況下,訪問它的值之前。

瑞安McGeary具有https://stackoverflow.com/a/2030565/454094示例實現不區分大小寫的哈希過的,這是我下面複製:

require "active_support/hash_with_indifferent_access" 

class CaseInsensitiveHash < HashWithIndifferentAccess 
    # This method shouldn't need an override, but my tests say otherwise. 
    def [](key) 
    super convert_key(key) 
    end 

    protected 

    def convert_key(key) 
    key.respond_to?(:downcase) ? key.downcase : key 
    end 
end 

有了它,你可以這樣做:

CaseInsensitiveHash.new(params)[:verbose]