2013-05-04 60 views
7

在下面的示例中,是否有方法在Slim中编写case语句?我做对的StackOverflow问题的一些变化:How to write a switch statement in RubySlim中的案例陈述

case a 
when 1..5 
    = "It's between 1 and 5" 
when 6 
    = "It's 6" 
when String 
    = "You passed a string" 
else 
    = "You gave me #{a} -- I have no idea what to do with that." 
end 

我尝试以下,但产生一个错误。

= case @taxon.name 
    = when "Wedding Cakes" 
    div.taxon-descripiton Wedding Cake Description 

这就是我告诉

... syntax error, unexpected tIVAR, expecting keyword_when 
; @output_buffer.safe_concat(("<when>\"Weddin... 

回答

9

=使用时要呈现的东西,当你要调用一些红宝石逻辑,而在一个视图中呈现什么,你应该使用-

- case @taxon.name  
    - when "Wedding Cakes"  
     div.taxon-descripiton Wedding Cake Description 

我不知道这会解决你的问题,但你有没有考虑过把这个逻辑转移到装饰器呢?

+0

我不确定装修工是什么,我也没有在网上找到任何修身装饰,你能给我一个提示。我只是好奇而已。我会尝试一下,如果有效,接受作为答案。感谢您的帮助! – 2013-05-04 17:24:10

+0

太棒了!但你是否会善意地告诉我“装饰者”是什么? – 2013-05-04 17:29:19

+2

装饰器只是另一种从视图中提取逻辑以保持它们干净的方式,如果你想开始使用它们,我建议你看看draper gem https://github.com/drapergem/draper。有一个轨道视频可以学习基础知识。 :) – 2013-05-04 19:07:39