在Rails 6中使用绝对路径

杰努伊

最近,我将要维护的Rails应用程序升级到Rails 6 RC2(来自5.2.3)。因此,升级后,我立即运行了自动化测试(RSpec),测试输出给了我很多弃用警告。这些警告之一是:

DEPRECATION WARNING: render file: should be given the absolute path to a file

因此,我转到了触发警告的视图文件,并进行了如下更改:

之前: render file: 'devise/sessions/new'

后: render file: Rails.root.join('app', 'views', 'devise', 'sessions', 'new.html.slim')

我再次运行测试,没有看到过时警告的输出。但是,切换到绝对路径后,视图现在仅呈现纯HTML代码,但是如果我删除.slim扩展名,即

render file: Rails.root.join('app', 'views', 'devise', 'sessions', 'new.html')

相应的视图已正确呈现,但现在测试将抱怨未使用绝对路径。有没有办法解决这个问题,还是这是Rails / Slim的错误?

丹尼尔·里科夫斯基(Daniel Rikowski)

在您的情况下,您似乎要呈现一个普通视图,即template

在这种情况下,file不建议使用该选项。相反,您应该使用该template选项。

render template: 'devise/sessions/new'

甚至更好,您可以使用以下快捷方式:

render 'devise/sessions/new'

背景

file选项旨在呈现一个视图,该视图位于您的Rails应用程序之外,您不能在其中依赖Rails的视图查找逻辑。因此,Rails希望拥有一条绝对的道路。要求绝对路径也迫使开发人员考虑相对路径段(/../)。

省略.slim扩展名,然后由模板引擎处理文件是用于模板的功能。使用file似乎提供了完全相同的功能,但是我猜测这只是视图路径查找的内部工作的副作用。看起来Rails开发人员希望将来改善文件和模板之间的区别,并且弃用相关文件是不破坏太多依赖使用file并且仍然期望模板功能的现有应用程序的中间步骤

PS:无需手动拆分路径。因此,如果您出于某种原因仍想使用file绝对路径,而不是

render file: Rails.root.join('app', 'views', 'devise', 'sessions', 'new.html.slim')

用这个

render file: Rails.root.join('app/views/devise/sessions/new.html.slim')

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Rails:在 Rails 6 中使用绝对路径

在发送邮件时,在代理https路径中添加了Rails 4动作邮件图像的绝对路径

在 Angular 2 + Electron 中使用绝对路径

在绝对路径中使用通配符创建文件

在使用ParcelJS构建的Cypress测试中,如何在绝对路径中使用导入?

bash中的命令无法使用绝对路径

使用JavaScript在MVC中获取文件的绝对路径

使用strchr在linux中查找绝对路径

PUG中的绝对路径

fopen()中的绝对路径

在PHP中创建绝对路径

Spring Boot 中的绝对路径

使用 Pathlib 确定绝对路径

无法使用绝对路径导入

对ClassLoader使用绝对路径getResourceAsStream()

使用相对路径和绝对路径在Powershell脚本中调用文件

如何在unix中使用expr从存储在变量中的文件的绝对路径名中提取父目录?

使用Gatsby在Markdown发布中使用特色图片的绝对路径

创建绝对路径

Jsoup绝对路径

如何在 React 或 Next.js 中使用绝对路径而不是相对路径?

为什么在webpack的输出属性的入口点和绝对路径中使用相对路径?

如何在PowerShell中基于相对路径或绝对路径获取绝对路径?

从绝对路径+相对或绝对路径创建新的绝对路径

如何在Spring MVC中使用绝对路径加载图像?

如何在 Katalon Studio 中使用 TestDataFactory 获取绝对路径

如何在Linux中使用'find'命令获取找到的文件的绝对路径?

在打字稿中使用绝对路径进行导入

在docker run命令中使用绝对路径不起作用