Ruby类中`add`关键字的作用?结合Rails ActionController源码解析
关于ActionController::Renderers中
add方法的作用解析 这里的add是ActionController::Renderers模块提供的核心方法,核心作用就是注册自定义/内置的渲染器规则,让Rails能够识别并处理特定格式的渲染请求。
具体作用拆解:
- 绑定渲染标识与处理逻辑:
add :json中的:json就是渲染器的标识,对应你在控制器中写render json: @model时的json选项。当你调用render指定该格式时,Rails会自动触发后面的块代码来完成渲染处理。 - 封装格式专属的渲染逻辑:块内的代码就是JSON格式渲染的具体实现:
- 先判断传入的内容是否为字符串,若非字符串则调用
to_json(options)将其序列化为JSON字符串 - 若传入了
:callback参数(对应JSONP场景),会将响应的Content-Type设为JS,并返回包裹在回调函数中的JSON内容(格式如/**/callbackName(jsonString)) - 无
callback时,将响应Content-Type设为JSON,直接返回序列化后的JSON字符串
- 先判断传入的内容是否为字符串,若非字符串则调用
- 提供渲染能力扩展点:除了Rails内置的
:json、:html、:xml等渲染器,你也可以通过add方法注册自定义渲染器(比如add :csv来处理CSV格式响应),扩展Rails的渲染能力。
内容的提问来源于stack exchange,提问作者albertski
相关产品推荐
相关产品推荐

