在 Rails 5.1 及更高版本中使用啥来代替`render :text`(和`render nothing: true`)?

Posted

技术标签:

【中文标题】在 Rails 5.1 及更高版本中使用啥来代替`render :text`(和`render nothing: true`)?【英文标题】:What to use instead of `render :text` (and `render nothing: true`) in rails 5.1 and later?在 Rails 5.1 及更高版本中使用什么来代替`render :text`(和`render nothing: true`)? 【发布时间】:2017-09-11 17:51:02 【问题描述】:

Rails 5.1 removes a whole load of previously deprecated methods。其中有老朋友render :text

当您需要渲染 一些 文本但又不想要视图模板的开销时,它非常有用。例子:

render text: "ok"
render text: t('business_rules.project_access_denied'), status: 401

改用什么?

【问题讨论】:

【参考方案1】:

不推荐使用的方式是使用render :plain

Rails Guide on Layouts and Rendering:

2.2.6 渲染文本

您可以使用:plain 选项将纯文本(根本没有标记)发送回浏览器进行渲染:

render plain: "OK"

奖金

现在应该使用head :ok,而不是render nothing: true(也已删除)。做同样的事情:发送 http 200 响应代码,只是标题,没有内容。

【讨论】:

这个特别的弃用让我头疼了 10 分钟。因此是自我回答。 何时弃用? 5.1.0.rc1 CHANGELOG 只是说“在render 中删除对:text 的弃用支持”(和:nothing,叹息),但您会认为某些 CHANGELOG 中的“我们正在弃用此”注释会告诉您改用什么。 太棒了,谢谢。必须为不可避免的酒和愤怒推动升级过程添加书签:) 我喜欢 Rails,但是 cmon,这是为了让我们的升级路径变得悲惨而弃用吗?制动变化的数量令人难以置信。 误会我你不render head: :no_content,它只是head :no_content,如果它可以节省其他人几分钟......

以上是关于在 Rails 5.1 及更高版本中使用啥来代替`render :text`(和`render nothing: true`)?的主要内容,如果未能解决你的问题,请参考以下文章

处理新版本 Android(3.x 及更高版本)中缺少的 MENU 按钮

app.EnterText() 不会在 XamarinUiTest 中输入要在 Android 7 及更高版本中输入的文本

在 API 15 及更高版本中使用 PreferenceActivity

在 Java 11 及更高版本中使用 HttpClient 时如何跟踪 HTTP 303 状态代码?

如何使用支持库 25.0.0 及更高版本获取片段()

如何在 Spring 5.3 及更高版本中使用 Stomp 和 SockJS 处理 CORS 起源?