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

如何使ERB模板中特定标签以字符串输出而非执行Ruby代码?

实现ERB模板特定标签原样输出的方法

当然可以啦!这里有几种简单的方案,能让你指定的ERB标签(比如<% unsubscribe %>)直接以字符串形式输出,其余标签保持正常的Ruby代码渲染逻辑:

  • 直接转义目标标签
    如果你可以修改原ERB模板的内容,只需要把不想被解析的标签里的<%改成<%%就行。比如把模板中的<% unsubscribe %>替换为:

    <%% unsubscribe %>
    

    这样ERB渲染时就会把这个标签当成普通字符串输出,最终结果就是<% unsubscribe %>,其他正常的<% ... %>标签依然会正常解析Ruby代码。

  • 渲染前动态修改模板内容
    要是你不想改动原模板文件,可以在调用render_to_string之前,先读取模板内容并替换特定标签。示例代码如下:

    # 读取原模板内容
    template_content = File.read('app/views/your_template.erb')
    # 把目标标签替换为转义后的形式
    modified_template = template_content.gsub('<% unsubscribe %>', '<%% unsubscribe %>')
    # 渲染修改后的模板内容
    result = ApplicationController.new.render_to_string(inline: modified_template)
    

    这种方式会在内存中临时修改模板内容,不会影响原文件,非常灵活。

  • 使用辅助方法批量处理(进阶)
    如果你有多个类似需要原样输出的标签,可以在控制器里定义一个辅助方法:

    def raw_erb_tag(tag_content)
      "<% #{tag_content} %>".html_safe
    end
    

    然后在模板里需要原样输出的地方调用这个方法:

    <%= raw_erb_tag('unsubscribe') %>
    

    这样渲染后也会得到<% unsubscribe %>的效果,适合需要批量处理的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:34:17