【发布时间】:2021-03-11 14:54:12
【问题描述】:
我有一个报表控制器,其中有排行榜。我想将排行榜下载到 csv 文件中 这是排行榜代码
def leaderboard
if params.has_key?(:start_date) && params.has_key?(:end_date) && params.has_key?(:account)
if params[:unit] == 'all'
@start_date = current_user.created_at
@end_date = Time.now
else
@start_date = Time.at(params[:start_date].to_i/1000)
@end_date = Time.at(params[:end_date].to_i/1000)
end
if params[:account] == 'all'
user_accounts = current_user.accounts.collect{ |a| a.id }
ActsAsTenant.without_tenant do
@conversations = Conversation.where(account_id: user_accounts).updated_between(@start_date,@end_date)
@users = current_user.accounts.collect{|account| account.users}.flatten.uniq.to_a
unassigned = User.new(name: 'Un-assigned')
@users << unassigned
end
else
account = Account.find(params[:account])
ActsAsTenant.with_tenant(account) do
@conversations = account.conversations.updated_between(@start_date,@end_date)
@users = account.users.to_a
unassigned = User.new(name: 'Un-assigned')
@users << unassigned
end
end
else
render json: {error: 'Invalid parameters'}, status: 422
end
end
这是我希望能够以 csv 格式下载的数据图像 https://i.stack.imgur.com/VI6lo.png
这里是排行榜.json.jbuider
json.users @users do |user|
json.(user,:id, :name)
json.closed_count @conversations.where(user: user).closed.count
json.open_count @conversations.where(user: user).open.count
json.replies @conversations.where(user: user).inject(0){|sum, conversation| sum + conversation.messages.where(updated_at: @start_date..@end_date).where(direction: 'OUT').count}
json.resolution_time formatted_duration(array_mean(@conversations.closed.where(user: user).closed.collect{ |c| c.resolution_time }))
json.first_response Conversation.first_response(@conversations.where(user: user))
end
json.total_closed @conversations.closed.count
json.total_open @conversations.open.count
json.total_replies @conversations.inject(0){|sum, conversation| sum + conversation.messages.where(updated_at: @start_date..@end_date).where(direction: 'OUT').count}
json.start_date @start_date.to_i * 1000
json.end_date @end_date.to_i * 1000
如何将其下载到 csv 中?
【问题讨论】:
标签: ruby-on-rails ruby controller leaderboard