Forum: Ruby on Rails Rails 3 respond_with csv

Announcement (2017-05-07): is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see and for other Rails- und Ruby-related community platforms.
olivernn (Guest)
on 2011-03-04 19:53
(Received via mailing list)
In my controller I have an instance of a custom report class, the
instance responds to to_csv, which returns a csv string.  I was hoping
to be able to use respond_with, in the same way I would if I wanted a
json representation of this object.  Instead I see an error because
Rails is expecting there to be a template.

ActionView::MissingTemplate (Missing template admin/reports/trips with
{:formats=>[:csv], :handlers=>[:erb, :builder, :rjs, :rhtml, :rxml],
:locale=>[:en, :en]}
in view paths

Is this the correct behaviour, I had a brief look through the rails
responder code and it looked to me like it should first try and render
a template, then if it can't find one try calling to_#{format}.

A sample of my code is in this gist
5f5cc5456e4b5c28a765ea52ea1b2dc2?d=identicon&s=25 marco antonio f. (marcoantonio_f)
on 2011-03-05 15:57
(Received via mailing list)
All right, but, before, why would you do that? I think if you really
need to use csv (eg. some legacy system), you would rather want to
read from the csv file, turn it into object and serialize it with
JSON. In the other end you'd do the opposit. I don't think csv is a
good format to respond with, just a persistency format, very limited
by the way.
Adam Solove (Guest)
on 2011-03-06 15:30
(Received via mailing list)
I'd like to strongly disagree. While csv is not a great way to send
objects back and forth, it is a fantastic way to give reports to
users, since they can play around with them in Excel.
5f5cc5456e4b5c28a765ea52ea1b2dc2?d=identicon&s=25 marco antonio f. (marcoantonio_f)
on 2011-03-06 16:57
(Received via mailing list)
Humm... got your point, you'r right.
Bryan Crossland (Guest)
on 2011-03-06 17:31
(Received via mailing list)
On Sun, Mar 6, 2011 at 7:18 AM, Adam Solove <> wrote:

> I'd like to strongly disagree. While csv is not a great way to send
> objects back and forth, it is a fantastic way to give reports to
> users, since they can play around with them in Excel.

On the other hand, if you know that the users who are going to be
the report in Excel are using Office 2007 or greater you can just format
data into an Excel .xlsx file and present them that as the result. No
to worry about converting to .csv and then the user having to import it
Excel to read it.

Julian Leviston (Guest)
on 2011-03-07 02:45
(Received via mailing list)
I agree with you, though I find it amusing when people export things to
csv just to run totals. So, it's important to work out just why they
want it in csv

New video up now at real fastcgi rails deploy
process! Check it out now!
olivernn (Guest)
on 2011-03-07 11:31
(Received via mailing list)
I appreciate the discussion on the pros and cons of exporting to csv,
however my question was more to do with what the expected behaviour of
respond_with is when the request format is csv.

I would have thought that since the object I am passing to
respond_with has a to_csv method that it wouldn't also need a template
to return a response, much like a json, xml or yaml request.  Is this
not the expected behaviour?  Maybe a bug in rails, or just something
that could do with some more documentation?

From ActionController::Responder

  # When a request comes in, for example for an XML response, three
steps happen:
  #   1) the responder searches for a template at people/index.xml;
  #   2) if the template is not available, it will invoke
<code>#to_xml</code> on the given resource;
  #   3) if the responder does not <code>respond_to :to_xml</code>,
call <code>#to_format</code> on it.
mfilej (Guest)
on 2011-03-31 15:03
(Received via mailing list)
Did you have any luck with this, Oliver?

I've encountered exactly the same problem. Should we reported this as
a bug?
mfilej (Guest)
on 2011-05-17 12:26
(Received via mailing list)
I've looked into this and it seems that there is no mechanism in AC
that would call to_csv automatically. The code in action_controller/
metal/renderers.rb suggests that xml and json are just two special
cases that do that.
This topic is locked and can not be replied to.