2012-01-06 111 views
5

我使用Dragonfly处理Rails 3.1应用程序中的图像。我正在努力通过url将图像分配给模型。用蜻蜓从URL分配图像

我有一个形式,这个工作的罚款:

<%= form_for [@word, @game, @picture], :html => {:multipart => true} do |f| %> 
    <%= f.hidden_field :retained_image %> 
    <p> 
    <%= f.label :image, "upload pic" %><br /> 
    <%= f.file_field :image %> 
    </p> 
    <p> 
    <%= f.label :image_url, "or pic URL" %><br /> 
    <%= f.text_field :image_url %> 
    </p> 
    <p> 
    <% if @picture.image_uid? %> 
    <label>Remove Picture?</label> 
    <%= f.check_box :remove_image %> 
    <% end %> 
    </p> 
    <p><%= f.submit %></p> 
<% end %> 

蜻蜓的文档状态:

蜻蜓直接从URL分配提供了一个访问:

@album.cover_image_url = 'http://some.url/file.jpg' 

但是但当我试试我的控制台:

=> #<Picture id: nil, game_id: nil, user_id: nil, created_at: nil, updated_at: nil, image_uid: nil> 
ruby-1.9.2-p290 > picture.image_url = "http://i.imgur.com/QQiMz.jpg" 
=> "http://i.imgur.com/QQiMz.jpg" 
ruby-1.9.2-p290 > picture 
=> #<Picture id: nil, game_id: nil, user_id: nil, created_at: nil, updated_at: nil, image_uid: nil> 

它似乎是返回我试图给蜻蜓的URL的字符串,而不是像在窗体中打开和拉动图像。

有没有什么我失踪时试图分配一个基于网址的图像?它似乎应该是非常简单的,但我似乎无法得到任何东西在ruby控制台中工作。

回答

8

你确定它不工作吗?当你输入(从网址分配后)

picture.image 

picture.image.size 

例如,会发生什么?

它将不会设置一个image_uid直到它被保存,但你有picture.image可供玩。

实际从url中获取的内容只是在需要的时候才会发生。例如,调用上面的'尺寸'会触发它。

+0

首先,谢谢马克的惊人的宝石。其次,哇,我感到很傻。我正在做一些提取和类似的东西:picture.save if picture.image_uid#显然这不起作用,我没有足够彻底的测试。谢谢你,很好。 – Kombo 2012-01-09 19:37:24

2

我有一个类似的问题,通过一个表单,image_url没有创建一个:image_uid保存。在轨道控制台中一切正常。

一旦我将它作为参数添加到控制器中,它就可以与:image_url一起使用。我想:image保存时会处理:image_url,但我必须明确地传递:image_url作为保存的参数。

+0

也许你应该添加一些代码来说明你的解决方案。 – 2014-02-11 19:38:15

+0

当然他是时间旅行者,意思是在rails 4中将'image_url'添加到'params.require(:my_model).permit(:foo,:bar,:image_url)'中。 – 2014-06-20 00:47:59