我一直在努力让以下内容在我的Rails 4应用程序中运行;我正在尝试从搜索API返回JSON响应,该API在返回的对象中生成了一些HTML:
## Controller code
...
respond_to do |format|
format.html # index.html.haml
format.json # index.json.erb
end
## JSON view code
[
<% @results.each do |result| %>
{
"type": "<%= result.type -%>",
"content": "<%= escape_javascript render partial: "search/#{result.type}", formats: :html, locals: { result: result } %>"
}<%= ',' unless result == @results.last %>
<% end %>
]
当我对搜索URL执行JSON请求时,生成的代码看起来正确转义并在各种在线JSON验证器中成功验证,但jQuery拒绝触发getJSON的回调函数。
如果我删除content
部分,回调会很好,所以我知道它与部分渲染有关。
任何指针都非常感激。如上所述,我在其他Stack Overflow问题中已经完成了许多建议的解决方案,并没有任何乐趣。
答案 0 :(得分:0)
我建议使用原生to_json
方法来手动创建json:
<%=raw @results.map do |result|
{ "type" => result.type,
"content" => render(partial: "search/#{result.type}", formats: :html, locals: { result: result }) }
end.to_json %>