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

时间:2012-04-09 08:47:33

标签: 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?

1 个答案:

答案 0 :(得分:8)

image_tag必须有一个源代码,Rails无法对其执行任何操作,但会引发异常。

你可以写一个这样的帮手:

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

或直接在视图中检查nil。无论如何,你必须做某事以防止错误。