2017-06-17 17 views
2

最初にいくつかの明確化。ruby​​ on rails javascriptを使用してcsvファイルをダウンロードする方法

私はローカル開発環境ですべてを試しています。

私のUsersControllerには、summary_csvという方法があり、csvファイルを作成して/tmp/your-csv-file.csvの場所に格納しています。

システムがファイルをダウンロードする準備ができていることを確認したら、私は、ユーザーがsummary_csv.js.erbで、具体的には、ファイルをダウンロードするのに役立ついくつかのJavaScript実行さsummary_csv.js.erbファイルを持って、私はwindow.location="https://stackoverflow.com/users/download_csv";をしようと中download_csv方法がありますコントローラーUsers

だから私はダウンロードは2つのことがわから起こるではなく、したい:

  1. ダウンロードは ビューを行方不明」のいくつかの種類を投げずに起こるように、私はこのdownload_csv方法 ためroutes.rbを設定する必要がありますどのように'エラー? (この時点では、ユーザーが に別のビューを指示するか、同じページに留まるかどうかは気にしません)。 window.location="https://stackoverflow.com/users/download_csv";/tmp/your-csv-file.csvにあるファイルのダウンロード、 を開始するようにdownload_csv方法の体内に行くべき何

答えて

0

私は解決策を見つけることになりました。助けを捧げたすべての人に感謝

だから、window.locationは結局使用する最良の方法でした。
1)controller/methodに設定します。 2)send_file上記の方法の本文に適切に記載されています。 3)正しいルートを正しい順序で設定します。

ステップ3は、動作させるために重要でした。
controller/methodの経路は、あなたの行動を経路指定すべき場所に関してRailsを混乱させないように、正確に設定されなければなりません。

resources :users do 
    collection do 
    get 'download_csv' => 'specify which controller#which_method_name' 
    end 
end 
1

1)は、それは準備ができていますので、あなたはただ、それにはあなたのファイルパスを渡し、send_fileする必要があります)この

resources :users do 
    collection do 
    get 'download_csv' 
    end 
end 

2のように、ユーザーのリソースやコレクション内のgetメソッドを置きます。

結果

def download_csv 
    send_file(
    "/tmp/your-csv-file.csv", 
    filename: "your_custom_file_name.csv", 
    type: "text/csv" 
) 
end 
+0

なぜ私はこれを試してみましたが、何も起こらない... '「ファイルを送信」が、何も起こりません...私はローカルの開発サーバー上でこれをやっていたと言うdevelopment.log' ...多分それはですか? – namesake22

+0

何らかの理由でそれが私のユーザーの 'show'メソッドを起動し、未定義のid = download_csvと言っています... – namesake22

+1

@ namesake22おそらくどのルートも宣言しなかったのであなたのshowメソッドが呼び出されています。あなたはお互いのためにやって、heheを宣言しないようにしてください。私は自分の答えを編集します –

関連する問題