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

如何从数据库渲染代码并使其在ERB文件中生效

解决数据库中ERB代码生效的方法

要让数据库里存的包含Ruby标签(比如<%= @user.name %>)的代码生效,只靠html_safe是不行的——它仅能让HTML内容不被转义,却无法解析执行ERB模板里的Ruby逻辑。你需要借助Ruby的ERB模板引擎来编译并渲染这段内容,具体步骤如下:

实现方式

直接在视图中通过ERB引擎处理数据库取出的内容:

<%= ERB.new(@emaildetail.description).result(binding) %>
  • ERB.new():将数据库中存储的字符串转换为可执行的ERB模板对象
  • result(binding):binding会把当前视图/控制器的上下文(包括所有实例变量、可用方法)传递给ERB模板,这样模板里的@user这类变量就能正常读取值。

额外说明

  1. HTML格式保留:如果渲染后的内容包含HTML标签,默认会被转义,若需要保留HTML格式,可在末尾追加.html_safe:
    <%= ERB.new(@emaildetail.description).result(binding).html_safe %>
    
  2. 安全风险:如果数据库中的内容是普通用户提交的,直接执行ERB会存在严重的代码注入风险,必须严格限制内容来源,只允许可信的内容存入数据库。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 20:54:57