Rails:format.js或format.json,还是两者兼而有之?

可能很明显,但我仍然缺乏基本知识。

内部控制器,既可以使用,也可以使用Javascript,所以两者都是一样的?

在Rails 3.1中,我发现的唯一区别是if格式化程序是js,然后答案以纯文本forms发送。 如果是json则将其编码为json。

如果是format.json

format.json { render :json => @accounts.map(&:attributes) } 

服务器发送:

 data:application/json;base64, 

如果是format.js

 format.js { render :json => @accounts.map(&:attributes) } 

服务器发送:

 [{"id":33,"email":"user1@example.com"}] 

jsonjs是两种不同类型的响应,它们在Rails中被定义为不同的MIME类型

 Mime::Type.register "text/javascript", :js, %w( application/javascript application/x-javascript ) Mime::Type.register "application/json", :json, %w( text/x-json application/jsonrequest ) 

即使Json可以被认为是JavaScript的一个子集,但并非所有JavaScript响应都是Json响应。

您可能希望在同一操作中使用Json和Js进行响应。

例如,您可能有一个操作,它使用Json响应API调用,并使用JavaScript(可能使用RJS)响应内部Ajax调用。