【发布时间】:2015-06-06 09:53:46
【问题描述】:
我有一个带有Ruby 2.2.0 的Rails 4 应用程序。
我正在构建一个需要存储大量图像的应用程序。目前该应用已存在,并且正在本地服务器上管理其图像,但我们想要改变这一点。
该应用目前部署在 Heroku 上,我们希望使用 Cloudinary 服务来上传(使用 carrierwave)新图像以及存储现有图像。
问题在于我似乎无法采用平台正在使用的当前文件夹结构。首先,我通过 cloudinary 仪表板中的媒体管理器上传了所有文件。我创建了两个文件夹header 和logo。在这种情况下,我将以header 文件夹为例。
class BannerUploader < CarrierWave::Uploader::Base
include Cloudinary::CarrierWave
def store_dir
"uploads/header/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
end
型号:
class CompanyImage < ActiveRecord::Base
mount_uploader :file_name, BannerUploader
belongs_to :company
end
最后但并非最不重要的是,这是我的观点:
<%
work_advantages = company.presentation.work_advantages
banner = company.company_images.where(header: true).first
%>
<%= link_to company do %>
<div class="card company-presentation-card card-hover">
<div class="card-container">
<div class="row">
<div class="col-md-12">
<div class="cover-image">
</div>
<h3><%= company.name %></h3>
<% company.company_sectors.each do |s| %>
<span class="h4-alt1 company-sector"><%= s.sector.name %></span>
<% end %>
<p><%= truncate(company.presentation.work_advantages, :length => 250) %> <span class="text-muted">(lees meer)</span></p>
</div>
</div>
</div>
</div>
<% end %>
<script>
//Set dynamic background image for the cover-image <div>
$(document).ready(function(){
$('.company-presentation-card').find('.cover-image').css('background-image', 'url("<%= banner.file_name %>")')
});
</script>
目前,正在传递的 url 如下:http://res.cloudinary.com/hxwmb9swy/image/upload/5a444a7c191e8c98999f6d0c2d3afaf9_Arendsen_Machinefabriek.jpg 但是我需要有 header(我在 Cloudinary 中创建的文件夹)文件夹,所以 url 实际上应该是这样的:http://res.cloudinary.com/hxwmb9swy/image/upload/header/5a444a7c191e8c98999f6d0c2d3afaf9_Arendsen_Machinefabriek.jpg
当然,在徽标的情况下,它完全相同,但是应该说 logo 而不是 header。这也适用于其他模型。所以我的问题是如何以某种方式管理它,以便我可以根据uploader 指定这个文件夹?欢迎任何想法。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4 cloudinary