在rails 5.1及更高版本中使用什么而不是`render:text`(以及`render nothing:true`)?

Ser*_*sev 54 ruby ruby-on-rails ruby-on-rails-5

Rails 5.1 删除了一大堆以前弃用的方法.其中有老朋友render :text.

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

render text: "ok"
render text: t('business_rules.project_access_denied'), status: 401
Run Code Online (Sandbox Code Playgroud)

用什么代替?

Ser*_*sev 115

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

布局和渲染的Rails指南:

2.2.6渲染文本

您可以使用以下:plain选项将纯文本(完全没有标记)发送回浏览器:

render plain: "OK"
Run Code Online (Sandbox Code Playgroud)

奖金

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

  • 我喜欢Rails,但是cmon,这个被弃用只是为了让我们的升级路径惨不忍睹?制动变化量令人难以置信. (9认同)
  • 这个特别的弃用让我头疼了10分钟.因此自我回答. (3认同)
  • 这个被弃用了什么时候?5.1.0.rc1 CHANGELOG只是说"在`render`中删除对`:text`的弃用支持"(和`:nothing`,叹气)但是你会认为"我们正在弃用这个"注释在一些CHANGELOG中告诉你用什么代替. (3认同)
  • 太好了,谢谢.得到'为这个不可避免的酒和真正的升级过程加入书签:) (3认同)
  • 让我觉得你不`render head::no_content`,它只是`head :no_content`,如果它为其他人节省了几分钟...... (3认同)
  • @muistooshort:而不是`render nothing:true`你应该使用`head:ok` (2认同)