2011-04-15 126 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"进行比较。