【发布时间】: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;">
<h3>Hello World</h3></pre></body></html>
在网页上,我希望只看到 Hello World,但实际上显示的是整个 Html 字符串。
我也尝试过使用模板文件 (.html.erb),但结果是一样的。
Rails 版本:4.2
【问题讨论】:
-
不应该
respond_with是respond_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