0

我是 Rails 的新手,不想在 Excel 中制作同样乏味的报告,而是创建一个营销分析仪表板。

我有一个用户模型,其中包含 created_at、marketing_source、购买和收入。

我想在 sql 中做的是

select marketing_source, weekofyear(created_at), count(id), sum(revenue) 
from User 
where weekofyear(created_at) between # and #
group by marketing_source, weekofyear(created_at)

然后将其作为表格打印到我的页面。

我只是不确定在哪里以及如何进行转换。我把这个通过

sql.execute 

在控制器代码中?我应该创建一个 rake 任务来制作一个 csv,然后使用 javascript 来读取 csv 并打印出表格吗?

任何方向将不胜感激。

4

1 回答 1

2

欢迎来到轨道

如果您是 Rails 新手,请查看railscasts.comhttp://guides.rubyonrails.org/

在 Rails 中,您不必编写这样的 sql 语句。

我假设您已完成数据库迁移并在数据库中拥有所有必要的列

在您的 users_controller 中,我认为这可以满足您的要求。

def index
 @users = User.where
 (["created_at >= ? AND created_at <= ?", yesterday.beginning_of_day, yesterday.end_of_day]).
 group("marketing_source")
end

然后在你对应的视图/views/users/index.html.erb

<table>
  <tr>
    <th>Name</th>
    <th>revenue</th>
    <th>Marketing source</th>
  </tr>

<% @users.each do |user| %>
  <tr>
    <td><%=h user.name %></td>
    <td><%=h user.revenue %></td>
    <td><%=h user.marketing_source %></td>
    <td><%= link_to 'Show', user %></td>
    <td><%= link_to 'Edit', edit_user_path(user) %></td>
    <td><%= link_to 'Destroy', user, :confirm => 'Are you sure?', :method => :delete %></td>
  </tr>
<% end %>
</table>
于 2012-10-22T20:46:33.227 回答