Rails HAML 视图渲染原始 HTML
Rails HAML View Rendering Raw HTML
我正在尝试使用 HAML 呈现一个简单的视图,该视图显示 collection 的 JSON objects 和上面的 header。我使用的路线是get 'posts.json', to: 'posts#posts_as_json'
。这将呈现以下视图。
posts_as_json.haml
%h1 Posts As JSON
%div.gutter-spacing
=raw(@posts)
我 运行 遇到的问题是页面将呈现原始 HTML 标签以及 JSON 本身。我一直在试图找出问题所在,并且根据一些实验,我认为这与在我的路由中使用 .json
直接相关。如果我删除它,它似乎会按预期呈现 HTML 。更新:这绝对是 issue
的根
使用路由 'posts.json'
是我的项目的要求,但我需要能够搜索已解析的 JSON 以及我之前用简单的 HTML 解决的问题绑定到 javascript 函数的文本输入。如何在 HTML 与 JSON 数据一起呈现的同时使用此端点?
问题是,如果您请求 .json
格式,rails 将自动尝试将其作为具有相应 MIME 类型的响应发送 application/json
。
现在浏览器收到他认为应该是 JSON 的响应,因此将其呈现为文本。
您可以覆盖呈现方法的 MIME 类型:
render content_type: content_type: "text/html"
或者如果你想从同一个控制器操作中处理两个请求,你可以使用 respond_to
-method:
def index
@posts = Post.all
respond_to do |format|
format.html { render }
format.json { render 'index_as_json.html', content_type: "text/html" }
end
end
我正在尝试使用 HAML 呈现一个简单的视图,该视图显示 collection 的 JSON objects 和上面的 header。我使用的路线是get 'posts.json', to: 'posts#posts_as_json'
。这将呈现以下视图。
posts_as_json.haml
%h1 Posts As JSON
%div.gutter-spacing
=raw(@posts)
我 运行 遇到的问题是页面将呈现原始 HTML 标签以及 JSON 本身。我一直在试图找出问题所在,并且根据一些实验,我认为这与在我的路由中使用 .json
直接相关。如果我删除它,它似乎会按预期呈现 HTML 。更新:这绝对是 issue
使用路由 'posts.json'
是我的项目的要求,但我需要能够搜索已解析的 JSON 以及我之前用简单的 HTML 解决的问题绑定到 javascript 函数的文本输入。如何在 HTML 与 JSON 数据一起呈现的同时使用此端点?
问题是,如果您请求 .json
格式,rails 将自动尝试将其作为具有相应 MIME 类型的响应发送 application/json
。
现在浏览器收到他认为应该是 JSON 的响应,因此将其呈现为文本。
您可以覆盖呈现方法的 MIME 类型:
render content_type: content_type: "text/html"
或者如果你想从同一个控制器操作中处理两个请求,你可以使用 respond_to
-method:
def index
@posts = Post.all
respond_to do |format|
format.html { render }
format.json { render 'index_as_json.html', content_type: "text/html" }
end
end