Slim框架中如何进行数值比较?语法报错问题咨询
解决Slim中根据条件输出不同class的span的问题
嘿,我完全懂你的 frustration——Slim的文档有时候确实拉胯,遇到这种小语法问题真的让人头大😤。不过你要实现的逻辑绝对是可行的,问题出在你没找对Slim里写条件判断的正确姿势,直接用>会被Slim当成模板的嵌套语法(比如a>span这种标签嵌套写法),所以才会报语法错误。
给你两种靠谱的实现方式:
方式一:用Slim的缩进式if-else块
这是最直观的写法,符合Slim的缩进语法风格:
- if match_percent > 50 span.classOne= "#{match_percent} %" - else span.classTwo= "#{match_percent} %"
解释一下:
- 开头的
-是用来标记这一行是Ruby代码,不会直接输出到页面 =用来输出后面的Ruby表达式结果到页面- 缩进用来表示代码块的层级,Slim会自动帮你生成对应的HTML结构
方式二:内联三元表达式(更简洁)
如果不想写多行的if-else,可以用Ruby的三元表达式直接绑定class:
span class=(match_percent > 50 ? 'classOne' : 'classTwo')= "#{match_percent} %"
或者用字符串插值的写法也可以:
span class="#{match_percent > 50 ? 'classOne' : 'classTwo'}"= "#{match_percent} %"
这种写法把条件判断放在了class属性的Ruby逻辑里,Slim会正确解析这个比较符号>,不会把它当成模板语法。
核心要点就是:所有的Ruby逻辑(比如比较运算、条件判断)都要放在Slim的代码标记里(-/=开头的行,或者内联的括号/插值字符串中),这样才不会和Slim本身的模板语法(比如>表示标签嵌套)冲突。
内容的提问来源于stack exchange,提问作者Andrew Torr
相关产品推荐
相关产品推荐

