0

テーブルのエクスポートについて http://railscasts.com/episodes/362-exporting-csv-and-excel?view=asciicastを見て、すべての手順に従ってください。

私は私のaplication.rbにあります:

 require 'csv'

mime_types.rb に MimeType を追加:

          Mime::Type.register "application/xls", :xls

私のコントローラー:

def index

if params[:report] && params[:report][:start_date] && params[:report][:end_date]
 start_date = params[:report][:start_date]
 end_date = params[:report][:end_date]
 @financial_reports = current_user.financial_reports.where(:created_at => start_date.to_date..end_date.to_date)

 respond_to do |format|
  format.html # index.html.erb
  format.csv { send_data @financial_reports.to_csv }
  format.xls
  format.json { render json: @financial_reports }
 end
end

終わり

私のモデルでは:

def self.to_csv(options = {})
  CSV.generate(options) do |csv|
  csv << column_names
  all.each do |product|
    csv << product.attributes.values_at(*column_names)
  end
end

終わり

最後に - ビュー内のリンク:

<%if @financial_reports%>  
 Download:
 <%= link_to "CSV", financial_reports_path(format: "csv") %> |
<%= link_to "Excel", financial_reports_path(format: "xls") %>
 ...
 <%end%>

Excel リンクをクリックすると、エラーが発生します。

         undefined method `each' for nil:NilClass

しかし、テーブル(html)にデータが表示されます!

また、CSV をクリックすると、次のようになります。

    Template is missing

構成ファイルに何かを追加したときに、アプリケーションを再起動しました。

誰かが私を助けることができますか?

4

1 に答える 1

3

あなたのコードにはいくつかの間違いがあります

@financial_reports = current_user.financial_reports.where(:created_at => start_date.to_date..end_date.to_date)

開始日と終了日に基づいて財務レポートをフィルタリングしています。これは、financial_reports のコレクションを返します。そのため、@financial_reports.to_csv を直接呼び出すことはできません。次のようなメソッドのパラメーターとして送信できる別の方法

 format.csv { send_data FinancialReport.to_csv(@financial_reports) }

そしてモデルで

def self.to_csv(reports,options = {})
  CSV.generate(options) do |csv|
  csv << column_names
  reports.each do |product|
    csv << product.attributes.values_at(*column_names)
  end
end

テンプレートが見つかりません - 対応するビュー ファイルがない場合にエラーが発生します

リファレンスhttp://railscasts.com/episodes/362-exporting-csv-and-excel?view=asciicastで指定されている /app/views/products/index.xls.erb ファイルがあるかどうかを確認します

于 2012-08-09T08:10:43.780 に答える