Я использую CarrierWave / RMagick для загрузки / загрузки версий и отображения их в представлении.
Однако я понял, насколько он сломан, когда пошел загружать файлы (например, docx или PDF). ).
Мне удалось получить файлы для правильной загрузки, используя
def image?(new_file)
%w(jpg jpeg gif png).include?(new_file.extension)
end
#
version :thumb, :if => :image? do
process resize_to_fit: [100, 100]
end
И, на мой взгляд, я начал комплекс, если / еще используя типы MIME, но я заметил, что это не такне масштабируется, и мне не нравится, насколько он грязный.
В качестве примера
<% @workflow.attachments.each do |f| %>
<% if f.content_type.start_with?("image") %>
<%= image_tag f.thumb.url %>
<% elsif f.content_type.start_with?("application/zip") %>
Text File
<% end %>
<% end %>
В итоге я выбрал 'application / zip', потому что именно так представляет CarrierWaveэто тип.
есть ли более здоровый способ сделать это? В настоящее время у меня есть черный список, настроенный для отклонения php / js и т. Д., И я в порядке, просматривая каждый тип файла, который я могу «предположить» для загрузки, но наличие основного if / else в представлении (особенно) кажется неправильным.
Я знаю, что я перенесу это в контроллер, как только я выясню правильную логику, но я чувствую, что мне нужно руководство по лучшему способу справиться с этим, пока он не запутался.