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

升级Rails 6.1后render_to_string传绝对路径报错如何修正

Rails 6.1 中 render_to_string 路径传参说明

Rails 6.1 版本正式移除了对传入绝对路径(以/开头的路径)渲染模板/布局的支持,你遇到的ArgumentError: Rendering layouts from an absolute path is not supported异常就是因为传入的模板路径带了开头的斜杠导致的。

正确传参写法

  • 最简便的改法:直接去掉路径开头的斜杠,传入基于app/views目录的相对路径即可,修改后的代码如下:
CreatePdf.new(content: render_to_string('pdfs/books/show')).call
  • 更稳妥的显式写法:通过template:参数明确声明要渲染的是普通模板文件,避免Rails的渲染规则自动匹配出错:
CreatePdf.new(content: render_to_string(template: 'pdfs/books/show')).call
  • 如果要渲染的是带下划线前缀的局部视图,使用partial:参数声明,路径同样不要带开头斜杠:
# 对应渲染 app/views/pdfs/books/_show.html.erb 这类局部文件
render_to_string(partial: 'pdfs/books/show')

注意事项

  • 传入的路径不需要写文件后缀,Rails会自动根据当前渲染的格式匹配对应后缀的模板文件(比如.html.erb、.pdf.erb、.axlsx.erb等)
  • 所有传给render_to_string的模板/局部视图/布局路径都不要带开头的/,否则都会触发绝对路径不支持的报错
  • 如果需要给模板传递本地变量,可以搭配locals:参数传入:
render_to_string('pdfs/books/show', locals: { current_book: @book })

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 01:33:19