2012-04-09 10 views
9

Nếu tôi không xử lý cái nhìn chính xác, chương trình môi trường sản xuất 500."ActionView :: Template :: Lỗi (không được biên dịch sẵn)" huy động trên "IMAGE_TAG nil"

<%= image_tag post.user.image_url %>

Điều này có thể

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

nhưng tôi chút bất cẩn và quên vấn đề này nhiều lần.

Làm cách nào để ngăn chặn điều này? Làm thế nào tôi có thể sử dụng <%= image_tag nil %> trong môi trường sản xuất mà không cần tăng 500?

Trả lời

9

image_tag phải có nguồn, Rails không thể làm gì với nó, nhưng tăng ngoại lệ.

Bạn có thể viết một helper như thế này:

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

hoặc đơn giản là kiểm tra nil trực tiếp trong một cái nhìn. Dù sao, bạn phải làm điều gì đó để ngăn chặn lỗi.