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

Ruby数组元素高亮:如何将数组转为单句并高亮指定元素

解决方案

核心思路

解决问题的关键是阻止ERB自动转义HTML标签,同时将所有物品合并为单句展示。步骤分为:给目标物品添加高亮标签,再告知Rails渲染时保留HTML格式。

代码实现

  1. 先处理每个物品,为需要高亮的元素(比如库存外物品)生成带<span>标签的内容:
# 基于物品库存状态处理每个元素
formatted_items = items.map do |item|
  if item.in_stock?
    # 库存内物品直接显示名称
    item.name
  else
    # 库存外物品添加高亮span标签
    "<span class='class-name'>#{item.name}</span>"
  end
end
  1. 在ERB模板中用to_sentence拼接成单句,并用raw或html_safe禁用转义:
<%= raw formatted_items.to_sentence %>
# 也可以用html_safe替代raw
<%= formatted_items.to_sentence.html_safe %>

防XSS的安全写法

如果物品名称是用户输入内容,直接拼接HTML有XSS风险,建议用Rails内置的content_tag生成标签:

formatted_items = items.map do |item|
  if item.in_stock?
    item.name
  else
    content_tag(:span, item.name, class: 'class-name')
  end
end

渲染方式和上面一致,用raw或html_safe即可。

效果说明

这样就能生成一个完整的句子,其中目标物品会被<span class='class-name'>包裹实现高亮,不会拆分成两个独立句子。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 15:40:28