Generate CSV file from rails
csv, ruby-on-rails
Solution
I suggest taking a look at comma. It works very well and allows you to handle stuff at the model level, as opposed to the view level.
Problem
I've been reading similar questions, but many of the answers are outdated or not clear enough for me. I'd like to be able to just do something like (in a controller action): ``` respond_to do |format| format.html format.csv end ``` I know I'd then need a view such as action.csv.erb So my questions are: 1) What do I need to configure in rails to allow this to happen in general. 2) How should I setup the CSV view to display some basic fields from a model? UPDATE: So I've tried to go the route of comma, I installed and vendored the gem. Then according to the read me, I threw this into my model (customized to my needs): ``` comma do user_id 'User' created_at 'Date' name 'Name' end ``` I then threw this in the control for the index action (according to the readme): ``` format.csv { render :csv => MyModel.limited(50) } ``` Then when accessing the index (not in CSV format) I receive the following ActionController Exception error: undefined method `comma' for So then I googled that, and I read that I should put require 'comma' in my model. After doing that, I refreshed (my local index page), and the error changed to: no such file to load -- comma So at this point I decided it must not be finding the comma files obviously. So I copied the files from the vendored gem folder of comma, from comma's lib folder, to the rails lib folder. I then refreshed the page and landed on this error: uninitialized constant Error Then I pretty much gave up. The errors from the trace were: /Users/elliot/.gem/ruby/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:443:in `load_missing_constant' /Users/elliot/.gem/ruby/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:80:in `const_missing' /Users/elliot/.gem/ruby/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:92:in `const_missing' Other notes, I have already installed FasterCSV Hope thats enough info :)