レポートとして csv ファイルを生成しています。モデルの検証に合格すると、正常に機能します。検証に失敗した場合は、「新しい」アクション ビューにエラーを表示し、HTML フォームと同様に、エラーが修正されるまでユーザーをそこにとどめたいと考えています。ただし、フォームで format=>'csv' を使用しているため、ユーザー入力がモデルの検証に失敗すると、テンプレートが見つからないというエラーが発生します。
Missing template /new.html with {:formats=>[:csv],
コントローラーで次のレンダリングを試しましたが、うまくいきませんでした:
format.csv { render :template=>"new.html.erb"}
イニシャライザにハンドラを追加しようとしましたが、うまくいきませんでした:
ActionController::Renderers.add :csv do |csv, options|
self.content_type ||= Mime::CSV
self.response_body = csv.respond_to?(:to_csv) ? csv.to_csv : csv
end