2017-01-10 85 views
0

我正在使用CSV類將數據轉換爲基於http://railscasts.com/episodes/362-exporting-csv-and-excel的Excel文件。如何將數據轉換爲Excel文件

在下載Excel文件時,它不會更新我使用過濾器在我的網頁上看到的最新數據。我的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'每月',commission_report_path(過濾器:'monthly'),class:'btn btn-secondary-outline add_hotel_btn' = link_to'每週',commission_report_path(過濾器:'每週'),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 } 
相關問題