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

时间:2010-02-25 17:10:45

标签: javascript ruby-on-rails json

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

所以内部控制器,既可以使用,也可以使用Javascript,所以两者都相同?

2 个答案:

答案 0 :(得分:38)

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调用。

答案 1 :(得分: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":"user1@example.com"}]