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

Ruby on Rails | 在ActiveAdmin中将字符串转为链接的实现方案

规范解决方案:将逗号分隔的许可证号转为ActiveAdmin链接

方案一:优化模型方法(推荐,分离数据与视图逻辑)

先修改模型中的方法,规避SQL注入风险,并返回许可证ID数组而非字符串,让视图层更易处理:

def permit_ids_needing_maps
  # 使用参数化查询防止SQL注入
  result = ActiveRecord::Base.connection.exec_query(
    "select dbo.NeedMapsList($1)",
    "NeedMapsList Query",
    [[nil, self.CONO]]
  )

  return [] if result.rows.empty?

  # 拆分逗号分隔的字符串为ID数组,过滤空值
  result.rows.flatten.first.split(/,\s+/).reject(&:blank?)
end

方案二:在ActiveAdmin侧边栏生成链接

在ActiveAdmin详情页的侧边栏中,遍历ID数组生成对应的ActiveAdmin链接:

sidebar :permits_needing_maps, only: :show do
  permit_ids = resource.permit_ids_needing_maps

  if permit_ids.empty?
    span "暂无需要地图的许可证"
  else
    ul do
      permit_ids.each do |id|
        li link_to(id, admin_well_master_path(id))
      end
    end
  end
end

方案说明

  • 安全性提升:用参数化查询替代直接字符串拼接,避免SQL注入漏洞
  • 关注点分离:模型仅负责数据提取与格式化,视图层处理展示逻辑,符合Rails最佳实践
  • 用户体验优化:处理空数据场景,避免空白侧边栏
  • 可维护性:返回数组格式后,后续若需调整展示样式(如改为逗号分隔的链接),只需修改视图代码即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 10:27:09