2017-01-10 11 views
0

私はCSVクラスを使用して、http://railscasts.com/episodes/362-exporting-csv-and-excelに基づくExcelファイルにデータを変換しています。データをExcelファイルに変換する方法

Excelファイルをダウンロードすると、フィルタを使用して自分のWebページに表示される最新のデータに更新されません。私のExcelファイルには、ページが最初に読み込まれたときに表示されるデータが含まれています。

私は、問題をデバッグしようとしたとxlsx_writerのような他の宝石を試みたが、同じ結果を得る:

def commission_report 
    today = Date.today 
    if params[:from_date].present? 
    from_date = params[:from_date] 
    to_date = params[:to_date] 
    elsif params[:filter] == 'monthly' 
    to_date = today 
    from_date = today - 30 
    else 
    to_date = today 
    from_date = today - 7 
    end 
    @commissions_report = UserOrderHistory.select("user_order_histories.*,SUM(user_order_histories.revenue_sharing) as revenue_total, restaurants.restaurant_name, managers.username,revenue_sharings.revenue").joins("LEFT JOIN revenue_sharings ON revenue_sharings.restaurant_id = user_order_histories.restaurant_id").joins("LEFT JOIN restaurants ON restaurants.id = user_order_histories.restaurant_id").joins("LEFT JOIN managers ON managers.id = restaurants.manager_id").where("user_order_histories.status != ''").where("revenue_sharing > 0").group("user_order_histories.restaurant_id,user_order_histories.deduction_date").where("user_order_histories.deduction_date BETWEEN ? AND ?",from_date,to_date).order(sort_column + " " + sort_direction) 
    @commissions_report = @commissions_report.as_json 
    @commissions_report = Kaminari.paginate_array(@commissions_report).page(params[:page]).per(10) 
    # raise @commissions.inspect 
    respond_to do |format| 
    format.html 
    format.csv { send_data @commissions_report.to_csv } 
    format.xls #{ send_data @commissions_report.to_csv(col_sep:  "\t") } 
    end 

end 
+0

同じフィルタがデータエクスポートに適用されていないようです。それは次のようにチェックしてください:) –

答えて

1

あなたはCSVをダウンロードするためのフィルタ処理の要求を作っている、のparamsが解析されていません。

<%= link_to 'Download CSV', your_path(from_date: params[:from_date], to_date: params[:to_date], filter: params[:filter]) %> 

あなたのparamsは、あなたのコントローラに再び戻って送信されます。この方法。

+0

= link_to 'Monthly'、commission_report_path(フィルタ: 'monthly')、クラス: 'btn btn-secondary-outline add_hotel_btn' = link_to 'Weekly'、commission_report_path(フィルタ: 'weekly')、class: btn btn-secondary-outline add_hotel_btn 'と入力します。毎週または毎月のフィルタでは機能しません。これらのパラメータだけを渡しています – bhupinder

+0

@bhupinderあなたはフィルタで正しいパラメータを取得していますか? 'pry'や' byebug'のようなデバッガがありますか? –

1

クリックしたときためです:これは、インデックスメソッドに行く

link_to "CSV", products_path(format: "csv") 

製品コントローラとは、そのメソッド内で再度DBからすべてのレコードをフェッチしている:

@products = Product.order(:name) 

あなたがしなければならないことは、フィルタリングされた製品のコレクションをCSV形式の応答に渡すことだけです。このような何か:

format.csv { send_data @filtered_products.to_csv } 
関連する問題