CSVDLをするコード

■コントローラ
  require 'csv'  

   ・・・

  def export
    period_from = mkdate_from_hash(params[:period_from])
    period_to   = mkdate_from_hash(params[:period_to]) + 1.day
    
    if (period_to - 1.day) < (period_from)
      render_with_flash("csv","終了日が開始日より前です")
      return 
    end
  
    buf = ""
    @students = Student.find(:all,
                 :conditions => ["? <= held_date_time and held_date_time < ?",period_from,period_to],
                 :include => "interview",
                 :order => "held_date_time DESC")
    if @students.size == 0
      render_with_flash("csv","指定した期間内の面接に予約している学生はいませんでした")
      return 
    else
      @students.each{|student|
        CSV.generate_row(student.to_export_format,Student::CSV_COL_SIZE,buf)
      }
     
     buf=Student::CSV_HEADER+buf
     
      send_data buf,
        :type =>     'text/csv; charset=shift_jis',
        :filename => "students_"+period_from.strftime("%y%m%d")+"_"+period_to.strftime("%y%m%d")+".csv"
    end
  end
■モデル

CSV_COL_SIZE = 17
CSV_HEADER = "参加日,面接ステータス,学生ステータス,氏,名,カナ(氏),カナ(名),
性別,メールアドレス,携帯番号,誕生日,区分,専攻,学年,学校,学部・学科,経路
".tosjis+"\n\n"

  def to_export_format
    [ " "+self.interview.held_date_time.strftime("%Y/%m/%d"),
      self.interview_type.name.tosjis,
      self.student_status.name.tosjis,
      self.family_name.tosjis,
      self.first_name.tosjis,
      self.family_name_kana.tosjis,
      self.first_name_kana.tosjis,
      self.sex.tosjis,
      self.mail_address,
      to_mobile_format(self.mobile_phone_no),
      " "+self.birthday.strftime("%Y/%m/%d"),
      self.segment.tosjis,
      self.major.tosjis,
      self.grade,
      self.school.tosjis,
      self.department.tosjis,
      self.apply_channel.tosjis
    ]
  end
■ビュー

<% @title="CSVダウンロード" -%>
指定した期間の面接に予約をしているか、参加して、かつ未評価の学生のデータをダウンロードします<br><br>

<% form_tag :action => "export" do -%>
<p>
  <%= select_date Date.today,:prefix=>"period_from",:use_month_numbers => true %> 〜 
  <%= select_date Date.today,:prefix=>"period_to",:use_month_numbers => true %>
</p>
<%= submit_tag("ダウンロード") %>
<% end -%>
<br>
<%= link_to "戻る",:action => "list" %>