You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Haml模板中为小数的小数部分(含小数点)包裹span标签

在Haml中包裹价格的小数部分

嘿,这个需求很常见,我给你两种实用的实现方式,都能完美搞定你的需求:

方法1:字符串分割法(直观易读)

因为你的something.price已经是保留两位小数的字符串,我们可以直接用split('.')把整数和小数部分拆分开,再分别输出:

- # 先判断是否包含小数点,避免无小数时出错
- if something.price.include?('.')
  - integer_part, decimal_part = something.price.split('.')
  = integer_part  # 输出整数部分,比如"1234"
  %span.decimal .#{decimal_part}  # 用span包裹小数点和小数部分,比如".41"
- else
  = something.price  # 如果是整数形式的价格,直接输出原内容

这种方法逻辑清晰,新手也能快速理解,适合需要明确处理整数/小数分支的场景。

方法2:正则替换法(简洁高效)

如果想少写点代码,用正则匹配替换是更快捷的选择,一行代码就能搞定所有情况(不管有没有小数点都能兼容):

= something.price.gsub(/(\.\d+)/, '<span class="decimal">\1</span>').html_safe

代码解释:

  • gsub(/(\.\d+)/, ...):匹配所有以.开头、后面跟着数字的片段(也就是你要包裹的小数部分),\1代表匹配到的内容
  • .html_safe:告诉Rails不要转义HTML标签,确保<span>能正常渲染成DOM元素

两种方法都能实现你要的效果,比如输入"1234.41"时,最终都会输出:

1234<span class="decimal">.41</span>

内容的提问来源于stack exchange,提问作者Merkelst

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:03:08