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"}]
json
和js
是两种不同类型的响应,它们在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调用。