2011-01-26 34 views
5

Tôi đang sử dụng kẹp giấy Rails 3 và cho phép người dùng tải tệp đính kèm lên mô hình tệp đính kèm.Rails PaperClip Tệp đính kèm, biết liệu có hình thu nhỏ hình ảnh không?

Nếu tệp là hình ảnh, ứng dụng sẽ tạo bản xem trước hình ảnh. Nếu tệp không được, tệp sẽ chỉ tải lên tệp (không có bản xem trước hình ảnh).

Bây giờ tôi muốn hiển thị danh sách tất cả các tệp đính kèm trong DB. Vì vậy, tôi sử dụng attachment.attachment (: lớn) và hoạt động tốt cho các tệp đính kèm hình ảnh, nhưng lỗi (rõ ràng) cho các tệp đính kèm không phải hình ảnh.

Cách tốt nhất để kiểm tra xem đó có phải là tệp đính kèm hình ảnh hay không? Nếu không, tôi muốn hiển thị một hình ảnh tĩnh chuẩn. Bất kỳ đề xuất? cảm ơn

Trả lời

0

Có thể bạn có thể sử dụng tùy chọn default_url? Điều đó sẽ được hiển thị nếu hình thu nhỏ thực không tồn tại.

http://www.suffix.be/blog/default-image-paperclp

+0

Đáng tiếc là tôi không nghĩ rằng công trình này. Nó hoạt động nếu không có tệp đính kèm nào cả (ví dụ: thuộc tính tệp đính kèm trong mô hình được đặt thành nil) nhưng không phát hiện thấy tệp hình thu nhỏ bị thiếu cho tôi. (FWIW Tôi đang ở trên kẹp giấy 2.3.1). Nếu có điều gì đó tôi có thể làm sai, tôi rất muốn biết về điều đó! –

0

Bạn có thể tạo một sự chuyển đổi đó bổ sung thêm một lĩnh vực attachment_content_type kiểu string để bảng đính kèm của bạn. Khi bạn tạo tệp đính kèm, kẹp giấy lưu trữ loại tệp trong trường đó. Sau đó, bạn có thể kiểm tra xem loại tệp có giống như "image/jpeg" hay không.

3

Kiểm tra attachment.attachment.attachment_content_type

Ví dụ, nó có thể là: "image/jpeg"

6

Đây là những gì tôi đã làm trong quan điểm của tôi:

<% if !(@attachment.attachment.content_type =~ /^image/).nil? %> 
<%= image_tag @attachment.attachment.url(:small) %> 
<%end%> 

này giả định rằng mô hình của bạn là tập tin đính kèm, và tệp của tôi, tôi gọi là tệp đính kèm.

Vì vậy, bạn có thể làm điều gì đó như:

<% if !(@attachment.attachment.content_type =~ /^image/).nil? %> 
<%= image_tag @attachment.attachment.url(:small) %> 
<%else%> 
<%= image_tag "/path/to/image/default.png" %> 
<%end%> 
Các vấn đề liên quan