【问题标题】:Unable to render response in html format无法以 html 格式呈现响应
【发布时间】:2020-04-10 14:09:22
【问题描述】:

我在显示 Html 文档作为对我的 rails API 的响应时遇到问题。 Html 字符串显示为纯文本,即使我使用了 html_safe,标签似乎也被转义了。

  respond_to do |format|
    format.html { render html: "<h1>Hello World</h1>".html_safe }
  end

这是 html DOM:

<html><head></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">
&lt;h3&gt;Hello World&lt;/h3&gt;</pre></body></html>

在网页上,我希望只看到 Hello World,但实际上显示的是整个 Html 字符串。

我也尝试过使用模板文件 (.html.erb),但结果是一样的。

Rails 版本:4.2

【问题讨论】:

  • 不应该respond_withrespond_to 吗?我在Rails 4.2 documentation 中找不到respond_with
  • 是的,你是对的。 respond_with 已从版本 4.2 中删除。感谢您指出,已编辑问题。但是,我仍然面临同样的问题。
  • 在这里等一下。你为什么首先用字符串调用render html:?如果你有一个静态 HTML 文件,你可以用render file: 'path/to/file.html' 渲染它。如果不是,你真的应该创建一个包含你的 HTML 的视图。
  • 还有“在网页上,我希望只看到 Hello World,但相反,会显示整个 Html 字符串。”。您发送回浏览器的不是有效的 HTML 文档。并且浏览器正在进入全面的 slop 模式来处理它。结果将是非常不可预测的。如果您想了解 rails 真正发回的内容,请查看页面的源代码。

标签: ruby-on-rails ruby-on-rails-4


【解决方案1】:

试试这个而不是respond_to

render html: '<h1>Hello World</h1>'.html_safe

邮递员:

浏览器:

【讨论】:

  • 你能贴一张你得到的图片吗?因为我在通过 Postman 发出请求时按预期收到了Hello World,所以它也应该在浏览器中按预期工作。我将添加我得到的答案的图像。评论好像不支持。
  • 你能分享一下你在邮递员中得到的完整回应吗?
  • 原始格式响应为&lt;h1&gt;Hello World&lt;/h1&gt;
  • “正如预期的那样”在您谈论这种格式错误的文档时非常相关。
猜你喜欢
  • 1970-01-01
  • 2018-12-12
  • 2015-10-22
  • 1970-01-01
  • 2013-03-11
  • 2018-10-31
  • 2014-10-04
  • 1970-01-01
  • 2011-02-02
相关资源
最近更新 更多