Rails如何知道在类中使用“as_json”

时间:2012-09-09 00:11:16

标签: ruby-on-rails datatables

我正在读这个Railscast:http://railscasts.com/episodes/340-datatables?view=asciicast

在页面中间,Ryan说

  

as_json方法由render_json在幕后触发   打电话给控制器。

但没有给出更多解释。我也试图让这个类用CSV响应,但是类中的def as_csv和调用控制器中的format.csv { render :csv =>什么都不做。

所以,不知何故,该类知道它何时被render :json初始化,但我无法弄清楚如何让它知道它是由render :csv初始化的。有人可以解释一下吗?

1 个答案:

答案 0 :(得分:1)

如果将对象传递给render :json,则会在该对象上调用as_json方法以检索该对象的JSON表示。您可以覆盖此方法,以便它返回您想要的任何内容。

这仅适用于JSON,它不是可应用于所有格式的一般规则。如果您想渲染某个对象的CSV表示,可以使用以下内容轻松完成:

format.csv do
  render :text => object.as_csv
end

然后在类中实现as_csv方法。