Sinatra应用中ERB模板yield内容以纯文本渲染而非HTML的问题
解决Sinatra中ERB模板HTML被当作纯文本渲染的问题
针对你遇到的myranks.erb内容被当作纯文本显示的问题,可以从以下几个方面排查和解决:
1. 确认模板文件位置与命名
确保myranks.erb文件放在Sinatra应用的views根目录下,文件名完全匹配(注意大小写,Linux/macOS环境下区分大小写)。
2. 检查布局中的yield语法
确认layout.erb里的<%= yield %>写法正确,不要遗漏等号。如果写成<% yield %>,模板内容会被执行但不会输出到页面中,你的代码里已使用正确写法,可快速确认这一点。
3. 调整ERB转义配置
Sinatra 2.x及以上版本默认会对<%= %>输出的变量进行HTML转义,但直接写在ERB模板里的原生HTML不会被转义。如果场景中存在特殊转义逻辑,可在应用中添加配置关闭全局转义:
set :erb, escape_html: false
4. 排查模板语法错误
检查myranks.erb文件是否存在未闭合的HTML标签、错误的ERB语法(比如未关闭的<% %>标签),这些语法错误可能导致模板解析异常,进而将HTML内容当作纯文本输出。可以先简化模板内容,比如只保留一行:
<h2>Your Ranks</h2>
测试是否能正常渲染,逐步排查复杂内容的问题。
5. 确认路由逻辑
检查是否有其他路由规则拦截了/myranks请求,导致返回的是纯文本而非渲染后的模板。确保你的路由代码唯一且正确:
get "/myranks" do erb :myranks, layout: :layout end
内容的提问来源于stack exchange,提问作者Ian Lewis
相关产品推荐
相关产品推荐

