2011-05-22 79 views
19

我用这样的方法:红宝石 - 使用包括case语句

case referer 
     when (referer.include? "some_string") 
     redirect_link = edit_product_path 
     when (referer.include? "some_other_string") 
     redirect_link = other_product_path 
end 

不幸的是,这将返回零,即使串some_string出现在变量referer

这里就是我试图用Ruby控制台:

ruby-1.8.7-p334 :006 > jasdeep = "RAILS" 
ruby-1.8.7-p334 :026 > case jasdeep 
ruby-1.8.7-p334 :027?> when (jasdeep.include? "AI") 
ruby-1.8.7-p334 :028?> puts "Hello" 
ruby-1.8.7-p334 :029?> end 
=> nil 

任何输入将不胜感激。

回答

32

试试这个

jasdeep = "RAILS" 
case jasdeep 
when /IL/ 
    puts "Hello" 
end 
+0

按预期工作!谢谢! – 2011-05-22 00:19:27

+1

是否有可能在'when'布尔变量中做到这一点? – Nick 2012-04-17 18:22:42

+1

@Nick有可能: '''当/#{some_var}/ 放入“变量” end''' – 2016-08-19 17:40:48

0

nil是puts语句的返回值,而不是.include ?.尝试从控制台单独运行下面的两个语句,并观察返回值:

jasdeep.include? "AI" 

puts "hello" 
+0

'红宝石1.8.7-P334:040>看跌期权“你好” 你好 =>无' – 2011-05-22 00:14:10

3
jasdeep = "RAILS" 

case 
    when jasdeep.include?("AI") 
    puts "Hello" 
end 
+0

感谢纳什,但这并没有帮助。 – 2011-05-22 00:21:03

1
case true 
when referer.include? "some_string" 
    redirect_link = edit_product_path 
when referer.include? "some_other_string" 
    redirect_link = other_product_path 
end 
+1

这导致Ruby 1.9.3出现'syntax error'(以及我想象的更高版本)。 – aceofbassgreg 2013-09-26 19:30:10