0

「report_runs」ビューフォルダ内の「reports_output」というフォルダにあるCSVファイルにクエリ出力を書き込んでいます。ファイル名は、レポートを実行しているユーザーによって付けられた名前と、現在の時刻などの他のパラメーターに基づいて生成する必要があります。2つの問題があります。

  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 に答える