"ActionView::Template::Error ( isn't precompiled)" raised on "image_tag nil"

asset-pipeline, ruby-on-rails-3.1

Solution

`image_tag` must have a source, Rails can do nothing with it, but raise an exception.

You can write a helper like this:

module ApplicationHelper
  def safe_image_tag(source, options = {})
    source ||= "default.jpg"
    image_tag(source, options)
  end
end

or simply check for `nil` directly in a view. Anyway you have to do something to prevent an error.

Problem

If I don't handle view correctly, Production environment show 500. `<%= image_tag post.user.image_url %>` This could be `<%= image_tag post.user.image_url if post.user && post.user.image_url %>` but I am little careless and forgot this issue several times. How can I prevent this? How can I use `<%= image_tag nil %>` in production environment without raising 500?

Original source