2011-07-11 101 views
0

我试图导出新手用户电子邮件地址的CSV文件。在date_select标签中选择的日期之后(基本上是最近的注册),新手都是“created_at”用户。Rails date_select生成csv文件

我使用FasterCSV gem和Scott Becker's code,并借用了here中的@start_date来实现此方法。

这里是我的控制器是什么样子:

def newbs_export 
    @start_date = Date.civil(params[:range][:"start_date(1i)"].to_i, params[:range][:"start_date(2i)"].to_i, params[:range][:"start_date(3i)"].to_i) 
    @users = User.find(:all, :if => [@created_at >= @start_date]) 

    csv_string = FasterCSV.generate do |csv| 
     # header row 
     csv << ["email"] 

     # data rows 
     @users.each do |user| 
     #if user[:created_at] >= Time.now 
     csv << [user.email] 
     end 

    end 

    # send it to the browsah 
    send_data csv_string, 
       :type => 'text/csv; charset=iso-8859-1; header=present', 
       :disposition => "attachment; filename=newbs.csv" 

    end 

这里是我的newbs.html.erb:

<% form_tag({:controller => "accounts", :action => "newbs_export"}, :method => "get") do %> 
<%= date_select('range', 'start_date', :order => [:month, :day, :year])%> 
<%= submit_tag("Submit") %> 
<% end %> 

我已经混合代码和挖自己有点孔试图缝合不同解决方案。有关我可以从哪里出发的任何建议?

谢谢!

+0

你遇到的错误/问题是什么? –

+0

对不起,约书亚......它正在向我吐出一个NilClass错误。马兰虽然击中了它的头部。欣赏它。 – Galen

回答

0

我将改变开始:

@users = User.find(:all, :if => [@created_at >= @start_date]) 

@users = User.where("created_at >= ?", @start_date) 

对于Rails3中或

@users = User.find(:all, :conditions => ["created_at >= ?", @start_date]) 

对于rails2

如果您发布的任何其他错误/问题,你有我无线我会尝试更新这个答案。

+0

工作很好,谢谢你! – Galen