2012-04-09 30 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.

Các vấn đề liên quan