Rails&Jbuilder,响应多种格式(html,json,csv)吗?

时间:2018-09-30 20:13:17

标签: ruby-on-rails json csv jbuilder

我有一个Rails 5应用程序。该应用程序在整个应用程序中都使用Jbuilder,并且希望保留相同的功能。我在响应多种格式时遇到问题。

对于单个模型,该应用程序在#show视图中具有“下载(json / csv)”按钮。

该对象对于CSV非常简单。我已经在模型to_csv上定义了一种方法来定义CSV的构建方式。这里没有问题。

另一方面,JSON对象稍微复杂一些,Jbuilder是一个可靠的解决方案。它要求对象中不存在的哈希中的键,还包括来自has_many关联的特定信息。

在控制器中,我有一个比较典型的格式块:

    respond_to do |format|
      format.html
      format.json { send_data @order.to_json, filename: "Order-#{Date.today}.json" }
      format.csv { send_data @order.to_csv, filename: "Order-#{Date.today}.csv" }
    end

我正在使用send_data方法将数据发送到要下载的文件。

我遇到的问题是:

  • 如果由于需要响应CSV而定义了此format块,则Jbuilder不会执行其操作。它从@order.to_json创建一个通用的JSON对象。

  • 如果我删除format.json { send_data @order.to_json, filename: "Order-#{Date.today}.json" }调用以允许Jbuilder。我收到一条错误ActionController::UnknownFormat,突出显示了respond_to do |format|行。

似乎没有找到使用Jbuilder的解决方案。我意识到我可以选择覆盖as_json方法,并在模型方法上构建对象。据我了解,有一些问题。


这是我的第一个StackOverflow问题。我试图以一种可读且信息丰富的方式进行布局。如果有任何改进,提示或其他信息对解决当前或将来的StackOverflow问题有帮助,请告诉我。

0 个答案:

没有答案