如何使用 Cloudinary 将带有转换的 url 输出为字符串?
Posted
技术标签:
【中文标题】如何使用 Cloudinary 将带有转换的 url 输出为字符串?【英文标题】:How can I use Cloudinary to output a url with transformation as a string? 【发布时间】:2013-07-05 02:28:10 【问题描述】:我会先说这可能是错误地处理这个问题。我想要做的是使用data-
属性将带有转换的url 传递给JS。
目前,我正在使用以下内容来生成图像标签:
= cl_image_tag(image.asset.filename.to_s, transformation: "scroller", :"data-medium" => image.asset.filename.to_s)
产生这个:
<img src="http://res.cloudinary.com/bucket/image/upload/t_scroller/v1373070863/s1ufy3nygii85ytoeent.jpg" data-medium="s1ufy3nygii85ytoeent.jpg">
我想做的是让它输出这个(利用我设置的t_medium
命名转换):
<img src="http://res.cloudinary.com/bucket/image/upload/t_scroller/v1373070863/s1ufy3nygii85ytoeent.jpg" data-medium="http://res.cloudinary.com/bucket/image/upload/t_medium/v1373070863/s1ufy3nygii85ytoeent.jpg">
目前,cl_image_tag
正在通过使用正确配置的 URL 生成图像标签来完成繁重的工作。这很棒,但是我似乎找不到任何关于如何将配置的 URL 输出为不带图像标记的字符串的文档(用作 data-medium
属性)。我可以手动配置网址,但我想知道是否有更好的方法?
【问题讨论】:
我向 Cloudinary 支持提交了一张票。等待他们的回音。 是什么让您认为这是一个 Cloudinary 问题?您是否尝试使用 Carrierwave 进行版本控制? AFAIK,这可能是你最好/最简单的选择。 见下面 Tal Lev-Ami 的回答。我不想对carrierwave 使用版本控制的原因是我有一个单一的多态图像模型,用于每个图像上传实例。因此,需要创建许多版本的图像,但是,只有一些模型使用其中的一些版本。我不想制作永远不会使用的不必要的版本。 cloudinary 之所以如此吸引人的部分原因是因为他们会即时进行图像处理,从而消除了对载波版本控制的需要。 【参考方案1】:您可以使用 cloudinary_url 帮助器生成不带图像标签的 URL。例如:
cloudinary_url(image.asset.filename.to_s, transformation: "medium")
正如zeantsoi所说,如果你使用的是CarrierWave,你也可以将上传器本身作为参数传递:
cloudinary_url(image.asset, transformation: "medium")
【讨论】:
好的,谢谢。在收到 Cloudinary 支持人员的回复后,正准备自己发布此内容。【参考方案2】:在 Tal Lev-Ami 的回答之上:
如果您需要在视图之外调用 cloudinary_url(例如在 api 的序列化模型中),您有两种选择:
依靠“帮手”:helper.cloudinary_url
或使用Cloudinary::Utils.cloudinary_url
【讨论】:
以上是关于如何使用 Cloudinary 将带有转换的 url 输出为字符串?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用自定义 url 和文件夹将图像上传到 cloudinary
如何在节点中使用 multer 将图像上传到 cloudinary 并与其他数据一起表达