0

我正在将查询输出写入我的“report_runs”视图文件夹中名为“reports_output”的文件夹中的 CSV 文件。文件名需要根据运行报告的用户给出的名称和当前时间等其他参数生成。我有两个问题:

  1. 如何使用 Time.now 生成唯一文件名转换为数字字符串(如 db/migrate 中的版本号)?和
  2. 如何正确路由到所有这些 .csv 文件?

我能够编写具有简单名称的文件,例如下面的 Item_List.csv,但无法通过在浏览器的显示视图中单击文件的 url 来查看文件。错误说:

No route matches "/report_runs/report_outputs/Item_List.csv"
4

2 回答 2

0

1:您可以使用简单的字符串插值生成包含当前时间的文件名,并且可以使用Time#strftime格式化字符串:

file_name = "item_list#{Time.now.strftime('%Y%m%d%H%M%S')}.csv"

2:如果您想提供像 .csv 文件这样的静态资产,那么您可以将它们写入公共文件夹。因此,例如,如果您在其中创建一个文件,public/report_runs/report_outputs/Item_List.csv则可以从示例中给出的路径访问该文件。

于 2012-08-20T19:12:31.347 回答
0

如果您在控制器中动态生成 CSV,那么您可以像这样路由到它:

<%= link_to item_list_path(:format => "csv") %>

假设您的控制器是ItemList.

于 2021-05-14T13:14:42.013 回答