How to add favicon in rails 3.2

Solution 1:

Simply add this to the <head></head> section of your layouts:

<%= favicon_link_tag 'favicon.ico' %>

Place the favicon.ico image in /app/assets/images/ if you are using the asset pipeline, and in /public/images/ if you are not.

Also, there is a bug if using Ruby 2.0 with Rails 3.0.20 (and maybe also 3.0.x), that will throws an exception when trying to render favicon.ico.

The fix is to place the following code into application_controller.rb:

  config.relative_url_root = ""

Solution 2:

generate your favicon for example here: http://www.favicon.cc/ and put in to public/ directory

UPDATE Favicon in public folder is not precompiled and it may be cached for a long time. It looks like it is better to use favicon_link_tag to avoid favicon updating problems. I do not know browsers needed favicon in root. According to favicon wiki all modern browsers maintains

<link rel="shortcut icon" href="favicon path" /> (favicon_link_tag)

Solution 3:

While all these answers are saying to create a 16x16 icon, the reality is you should be creating both a 16x16 and 32x32, in order to support retina displays. None of the online generators did a very good job with this.

On Mac, there is a great $5 app called Icon Slate, which allows you to easily create both formats in a single ICO file.

On Windows, I've used Axialis IconWorkshop with great success, but it's a much heavier-duty tool, and is significantly more expensive at about €50.

Both will create an ico file with both 16x16 and 32x32 images within it.

If you're using the asset pipeline, use the app/assets/images folder rather than /public. The number of fringe browsers that ignore the link tag is rapidly approaching zero, so jumping through hoops to accommodate them isn't worth it.

As mentioned in other answers, use this in the head to display it:

<%= favicon_link_tag 'favicon.ico' %>