2011-04-15 124 views
1

我得到一個布爾值作爲參數,並將其分配給一個變量字符串不會出現

@package = params[:package] 

現在,我應該回報基礎上的package值的字符串的方法。該方法是這樣的:

def get_description(package) 
    if package == 1 
     "foo" 
    elsif package == 2 
     "bar" 
    end 
    end 

在另一種方法,我試圖讓@description通過:

@description = get_description(@package) 

的問題是,是不是顯示的字符串。 @description變量保持空白。也許我太傻了,看不到這個bug?

+0

從你的代碼中,我假設你的意思是兩值(即「1」或「2」),而不是真/假意義上的布爾值? – 2011-04-15 12:14:09

+0

是的,正好! – Tronic 2011-04-15 15:02:34

回答

5

如果你願意,你可以用你的代碼改換包裝的價值整數

def get_description(package) 
    package = package.to_i 
    if package == 1 
    "foo" 
    elsif package == 2 
    "bar" 
    end 
end 

或使用case語句:

def get_description(package) 
    case package.to_i 
    when 1 
    "foo" 
    when 2 
    "bar" 
    end 
end 
3

所有參數在控制器到達如 ,不管你認爲他們應該是什麼類型。如果該參數最初是通過View使用Integer寫入瀏覽器的,則甚至可以這樣做。這只是因爲瀏覽器將數據發送回服務器的方式。

您需要將參數轉換爲整數,或將其與字符串"1""2"進行比較。