2010-02-25 87 views
26

可能很明显,但我仍然缺乏基本的知识。Rails:format.js或format.json,或两者兼而有之?

因此,内部控制器,都可以使用,或者它总是Javascript,所以两者都是一样的?

+0

我相信可以使用它们,因为它们是单独的MIME类型。为什么不尝试看看? – 2010-02-25 17:22:59

回答

23

在Rails 3.1中我能发现的唯一区别是if格式化程序是js,那么答案就会以纯文本的形式发送。如果它是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":"[email protected]"}] 
34

jsonjs两种不同类型的反应,他们在Rails的

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的一个子集定义为不同的MIME类型,不是所有的JavaScript反应实际上是JSON响应。

你可能想用Json和Js做出相同的动作。

例如,您可能有一个操作,可以通过Json响应API调用和JavaScript(可能使用RJS)来响应内部Ajax调用。

+3

正确的答案 – Donato 2016-03-19 01:29:37

相关问题