It's generally a good idea to use the ":cache=>true" argument to stylesheet_link_tag to ensure that all your stylesheets are loaded in a single request in production. Eg:
= stylesheet_link_tag '/jqtouch/jqtouch.min.css', '/themes/apple/theme.min.css', 'mobile', :cache=>true
This can cause problems though if the stylesheet:
- References resources (such as background images) via relative URLs
- Lives somewhere other than public/stylesheets
The reason it's a problem is that the :cache=>true option causes stylesheet_link_tag to bundle all listed stylesheets into /public/stylesheets/all.css. Suddenly, every URL is relative to public/stylesheets.
I encountered this problem when using JQTouch in a Rails app.
The theme stylesheet for jqtouch was located in/public/themes/apple/ and it expected to find all images in an img sub-folder. This worked fine in development but in production, suddenly no images appeared.
My fix for this was simply to create a symbolic link in the stylesheets folder thus:
The theme stylesheet for jqtouch was located in
My fix for this was simply to create a symbolic link in the stylesheets folder thus:
cd stylesheets
ln -s ../themes/apple/img img
This seems to do the trick, even on Heroku.