在"image_tag nil"上引发"ActionView :: Template :: Error(未预编译)"

rus*_*eel 9 ruby-on-rails-3.1 asset-pipeline

如果我没有正确处理视图,生产环境显示500.

<%= image_tag post.user.image_url %>

这可能是

<%= image_tag post.user.image_url if post.user && post.user.image_url %>

但我有点不小心,多次忘记了这个问题.

我怎么能阻止这个?如何<%= image_tag nil %>在不提高500的情况下在生产环境中使用?

Nas*_*ges 8

image_tag 必须有一个源,Rails不能对它做任何事情,但引发异常.

你可以这样写一个帮手:

module ApplicationHelper
  def safe_image_tag(source, options = {})
    source ||= "default.jpg"
    image_tag(source, options)
  end
end
Run Code Online (Sandbox Code Playgroud)

或者nil直接在视图中检查.无论如何,你必须做一些事情来防止错误.