这是我的怀疑。
我们在RoR中有一个项目,我们使用Ajax调用使其更具动态性。他们希望我将文字JSON放在html模板中并用javascript中的eval()解析它,避免将异常放入Controller中直接返回响应作为JSON。
示例:WhateverControoler #index - >将呈现views / whatever_controller / index.html.erb(html模板中的JSON文字):
{
"Success": "false",
"Date": ("need_login": "true")
}
我建议在WhateverControoler #index
中使用什么render :json => (: success => false, :data => (:need_login => true))
他们希望我使用Controller正常呈现的模板来显示文字JSON,而不是将其放入Controller中。
有些控制器已经开始/提升了重定向到其他地方的块,因此我需要将异常放到渲染JSON而不是redirct。
if (is_ajax) render :json[..] else redirect_to [..] end
我需要有充分的理由避免它,并表明这是错误的。
这有道理吗?我试着尽力解释。
PS:我知道我可以使用“respond_to do | format | ...”但是由于重定向,我需要好像是法规,代码已经很乱,他们想避免弄乱更多答案 0 :(得分:3)
如果可以,请避免使用模板。以下是一个很好的理由清单:
答案 1 :(得分:1)
从我的角度来看,通过erb生成json的主要缺陷是你不确定你的json是否有效(但我猜这与html的问题相同)。你也必须自己设置mime类型。
to_json已经过充分测试,因此您可以预期输出将是有效的JSON。
to_json的主要问题是它无法生成你想要的所有json,而且有些人要求提供json构建器(参见ticket)
所以我的建议是,只要你不受to_json的限制,在控制器中使用to_json,最后通过erb生成它