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

如何将含Ruby变量的动态HTML代码与独立HTML文件关联?

嘿,这个需求太常见啦!Ruby生态里有现成的方案帮你把HTML结构和动态逻辑彻底分开,最顺手的就是用内置的ERB模板引擎,给你详细说说怎么搞:

方案一:用Ruby内置的ERB模板(最推荐)

ERB是Ruby自带的模板工具,不用额外装依赖,完美适配你说的「变量嵌入+未知次数循环」场景。

1. 抽离HTML到ERB模板文件

新建一个test.html.erb文件,把原来的HTML结构放进去,在需要动态内容的地方嵌入Ruby代码:

<!DOCTYPE html>
<html>
<head>
  <title><%= page_title %></title>
</head>
<body>
  <h1>动态内容展示</h1>
  <!-- 循环渲染列表(未知次数完全没问题) -->
  <div class="item-list">
    <% dynamic_items.each do |item| %>
      <div class="item-card">
        <h3><%= item[:title] %></h3>
        <p><%= item[:content] %></p>
      </div>
    <% end %>
  </div>
  <!-- 嵌入单个Ruby变量 -->
  <p>当前时间:<%= current_time %></p>
</body>
</html>

这里的语法规则很简单:

  • <%= 变量/表达式 %>:把Ruby代码的执行结果输出到HTML里
  • <% Ruby代码 %>:执行Ruby逻辑(比如循环、条件判断),但不会输出内容

2. 在test.rb里渲染模板并传入数据

编写Ruby代码读取模板,准备好动态数据,然后生成最终的HTML:

require 'erb'

# 1. 准备需要传入模板的动态数据
page_title = "我的动态页面"
current_time = Time.now.strftime("%Y-%m-%d %H:%M")
dynamic_items = [
  { title: "第一条动态", content: "这是ERB渲染的内容" },
  { title: "第二条动态", content: "循环次数完全由数据决定" },
  # 可以根据业务逻辑动态添加更多元素
]

# 2. 读取ERB模板文件
template_content = File.read('test.html.erb')
erb_template = ERB.new(template_content)

# 3. 渲染模板:binding会把当前作用域的所有变量传递给模板
rendered_html = erb_template.result(binding)

# 4. 输出或保存结果:可以直接打印,也可以写入文件
puts rendered_html
File.write('final_output.html', rendered_html)

额外:如果是Web框架场景(Rails/Sinatra)

要是你的代码是在Web框架里跑的,那就更省心了:

  • Rails里:把模板放在app/views目录,控制器里定义实例变量(比如@dynamic_items),直接用render方法就能自动关联渲染
  • Sinatra里:把.erb模板放在views文件夹,路由里定义变量后调用erb :test即可完成渲染
方案二:可选的其他模板引擎

如果觉得ERB的语法不够简洁,也可以用更轻量的模板引擎:

  • Slim:用缩进代替HTML标签,代码更紧凑
  • Haml:和Slim类似,也是缩进式语法,可读性强

比如用Slim写的模板会是这样:

html
  head
    title = page_title
  body
    h1 动态内容展示
    .item-list
      - dynamic_items.each do |item|
        .item-card
          h3 = item[:title]
          p = item[:content]
    p 当前时间:= current_time

使用前需要先安装对应gem(比如gem install slim),然后在Ruby代码里替换成对应引擎的渲染逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:47:42