I have a simple website in which I upload files (e.g., PDFs
and .docs) for later download by visitors to the site. I store the
files under public/images in a sub-directory corresponding to the
particular file. An example location might be
public/images/books/#{toc_dir}/#{toc_name}
where toc_dir = “Book_TOC/toc” and toc_name = “book.pdf”
In my index.rhtml file I use the following code to create a link to
the above resource:
<% if book.toc_file_name != nil %>
<% toc_name = book.toc_file_name %>
<% toc_dir = “#{book.title.gsub(/[^a-zA-Z0-9.]/, ‘_’)}/toc” %>
<%= link_to(“TOC”, “/images/books/#{toc_dir}/#{toc_name}”, :popup =>
true) -%>
<% end %>
In my test environment (Windows XP, InstantRails) this is works just
fine but when I upload to the production environment (Linux/CentOS)
clicking the link results in the following complaint:
no route found to match “/images/books/Book_TOX/excerpt/book.pdf” with
{:method=>:get}
What is the proper way to deliver files. I tried send_file but
couldn’t get that working. I also tried an absolute path in the
link_to command but that resulted in the same route complaint. Is it
necessary to put the files in a directory that is not under public/
images?
Any help is appreciated.
- SD