路由到CSV文件?

时间:2012-08-20 18:41:21

标签: ruby ruby-on-rails-3

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

  1. 如何使用Time.now转换为数字字符串(如db / migrate中的版本号)生成唯一文件名?和
  2. 如何正确路由到所有这些.csv文件?
  3. 我能够用简单的名称编写文件,例如下面是Item_List.csv,但是无法通过在浏览器的show视图中单击文件的URL来查看文件。错误说:

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

2 个答案:

答案 0 :(得分: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中创建文件,则可以从示例中给出的路径访问该文件。

答案 1 :(得分:0)

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

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

假设您的控制器是 ItemList