开发者

Rails: format.js or format.json, or both?

Might be obvious, but still I'm lacking here of the basic knowledge.

So inside controllers, can both be used, or is it always开发者_开发技巧 Javascript, so both are the same?


json and js are two different types of response and they are defined as different MIME types in 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 )

Even if Json can be considered a subset of JavaScript, not all JavaScript responses are actually Json responses.

You might want to respond with Json and Js in the same action.

For instance, you might have an action that responds with Json to an API call and with JavaScript (perhaps using RJS) to an internal Ajax call.


In Rails 3.1 the only difference I can spot is that the if formatter is js, then the answer is sent as plain text. If it is json then it is encoded as json.

if format.json

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

server send:

data:application/json;base64,

if format.js

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

server send:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜