Rails date_select для генерации CSV-файла - PullRequest
0 голосов
/ 11 июля 2011

Я пытаюсь экспортировать файл CSV из адресов электронной почты пользователей Newbie. Новички - это пользователи, которые «создали_от» после даты, выбранной в теге date_select (в основном это самые последние регистрации).

Я использую гем FasterCSV и код Скотта Беккера и заимствовал @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 %>

Я смешал код и вырыл себе дыру, пытаясь соединить разные решения. Любой совет, куда я мог бы пойти отсюда?

Спасибо!

1 Ответ

0 голосов
/ 11 июля 2011

Я начну с изменения:

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

на

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

Для рельсов3 или

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

Для рельсов2

Если выопубликуйте любые другие ошибки / проблемы, которые у вас есть, я постараюсь обновить этот ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...