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

Ben*_*Ben 27 javascript json ruby-on-rails

可能很明显,但我仍然缺乏基础知识.

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

Sim*_*tti 40

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 )
Run Code Online (Sandbox Code Playgroud)

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

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

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


bon*_*iii 23

在Rails 3.1中,我能看到的唯一区别是if格式化程序是js,然后答案以纯文本形式发送.如果是json那么它被编码为json.

如果是format.json

format.json {
  render :json => @accounts.map(&:attributes)
}
Run Code Online (Sandbox Code Playgroud)

服务器发送:

data:application/json;base64,
Run Code Online (Sandbox Code Playgroud)

如果是format.js

format.js {
  render :json => @accounts.map(&:attributes)
}
Run Code Online (Sandbox Code Playgroud)

服务器发送:

[{"id":33,"email":"user1@example.com"}]
Run Code Online (Sandbox Code Playgroud)