Mar*_*arc 20 ruby-on-rails carrierwave
我通过典型的ORM设置使CarrierWave正常工作并通过表单上传.我想弄清楚如何在表单提交上下文之外使用CarrierWave.例如,当用户注册时,我想抓住他们的gravatar并将其存储在CarrierWave中.这是我拥有的,它不起作用:
gravatar_url = "http://www.gravatar.com/avatar/#{Digest::MD5.new.update(current_user.email)}?s=512&d=identicon"
uploader = ImageUploader.new
uploader.store! gravatar_url
Run Code Online (Sandbox Code Playgroud)
也没有错误.我一直在寻找网络,但一直无法找到解决方案.
Nur*_*iel 45
在用户注册后在控制器中(假设您的用户图像字段仅称为"图像")
gravatar_url = "http://www.gravatar.com/avatar/#{Digest::MD5.new.update(current_user.email)}?s=512&d=identicon"
@user.remote_image_url = gravatar_url
@user.save
Run Code Online (Sandbox Code Playgroud)
我认为这是根据carrierwave文档和一些搜索的最佳方式.
请享用!
Chr*_*ola 19
实际上,remote_{attribute}_url
如果您使用的是活动记录/模型帮助程序,则可以使用内置属性执行此操作(有关详细信息,请参阅CarrierWave railscast).但是,我在源代码中挖了一下,看看这实际上是如何工作的,看起来即使你不是,你也应该能够使用以下内容:
uploader = ImageUploader.new
uploader.download! some_remote_url
uploader.store!
Run Code Online (Sandbox Code Playgroud)
试试看.
kei*_*ley 17
我在尝试弄清楚如何store!
使用本地文件路径方面遇到了很多麻烦.事实证明,store!
实际上将文件作为参数而不是字符串.
对于URL,您需要require 'open-uri'
先打开文件/网址.这样的事情应该有效:
require 'open-uri'
gravatar_url = "http://www.gravatar.com/avatar/#{Digest::MD5.new.update(current_user.email)}?s=512&d=identicon"
tempfile = open(gravatar_url)
uploader = ImageUploader.new
uploader.store! tempfile
Run Code Online (Sandbox Code Playgroud)
这同样适用于文件路径,但open-uri
在这种情况下您不必要求.
归档时间: |
|
查看次数: |
15783 次 |
最近记录: |