You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 22:50:40