2017-07-28 12 views
0

をダウンロードしているかどうかを確認するにはどうすれば私の見解形式でダウンロードボタンを持って、コントローラルビーオンレール:csvファイルを

def index 
    respond_to do |format| 
    format.html { @some_variables = some_variables.page(params[:page]) } 
    format.csv { 
     render csv: some_variables, headers: SomeVariable.csv_headers 
    } 
    end 
end 

そして、いくつかのデフself.to_csv方法で「インデックス」アクションを使用します私のモデルSomeVariableでは、私はCSVファイルを生成します。

ダウンロードがOKで、フラグを設定しているかどうかを確認する方法はありますか。 ダウンロードは何か他の は、いくつかのエラー エンド

を上げるん OK行った場合、私はindexアクションで「救助を開始」が、感謝よりも多くのだろう共有、他の「賢く」の実装があるかどうかを考えました。

答えて

1

send_fileは、あなたが行う予定の良い代替手段です。 ここで詳細を見つけることができますHow to download file with send_file?API Dock

+0

ステファンありがとうございます。 ダウンロード部分はすでに正常に動作しています。私はそれが間違っているかどうかをチェックする方法を探していたでしょう... – yusefu

+0

それでは、私はあなたの「レスキュー」を使う考えは良いものだと思います。 –

0

私は単純な解決策を考え出しました。私はafter_actionを選択しました。 after_actionは、成功する前のアクションが成功した場合にのみ実行されます。この場合、ダウンロードが実行された場合、つまりcsvレンダリングが202を取得した場合、何かをしようとしています。 アクションインデックスが実行された後、方法は、例えば、ダウンロードされた時間を更新する。

class SomeVariableController < ApplicationController 

after_action :update_downloaded_time, only: :index, if: -> {current_user.admin?} 

def index 
    respond_to do |format| 
    format.html { @some_variables = some_variables.page(params[:page]) } 
    format.csv { 
     render csv: some_variables, headers: SomeVariable.csv_headers 
    } 
    end 
end 

def update_downloaded_time 
    @some_varibale.update_all(downloaded_at: Time.now) 
end