Ruby on rails 使用蜻蜓从URL分配图像

Ruby on rails 使用蜻蜓从URL分配图像,ruby-on-rails,ruby,ruby-on-rails-3,paperclip,dragonfly-gem,Ruby On Rails,Ruby,Ruby On Rails 3,Paperclip,Dragonfly Gem,我正在使用Dragonfly在Rails 3.1应用程序上处理图像。我正在努力通过url将图像分配给模型 我的工作罚款形式如下: <%= form_for [@word, @game, @picture], :html => {:multipart => true} do |f| %> <%= f.hidden_field :retained_image %> <p> <%= f.label :image, "upload

我正在使用Dragonfly在Rails 3.1应用程序上处理图像。我正在努力通过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 %>
但当我在控制台中尝试时:

 => #<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> 
=>#
ruby-1.9.2-p290>picture.image\u url=”http://i.imgur.com/QQiMz.jpg"
=> "http://i.imgur.com/QQiMz.jpg" 
ruby-1.9.2-p290>图片
=> # 
它似乎是在返回我试图提供给蜻蜓的URL字符串,而不是像表单中那样打开和拉取图像


在尝试根据url分配图像时,是否缺少某些内容?它看起来应该很简单,但是我在ruby控制台中似乎什么都不能用。

你确定它不能用吗?键入时会发生什么(从url分配后)

比如说

在保存图像之前,它不会设置图像uid,但您可以使用picture.image进行播放


从url的实际抓取延迟进行,即仅在需要时进行。例如,调用上面的“size”会触发它。

我遇到了一个类似的问题,即:image\u url在保存时没有创建:image\u uid。在rails控制台中,一切正常


在我将:image_url作为参数添加到控制器中后,它就可以使用了。我原以为:image可以在保存时处理:image\u url,但我必须明确地将:image\u url作为参数传递以进行保存。

首先,感谢Mark提供了这颗神奇的宝石。第二,哇,我觉得自己很傻。我做了一些抓取之类的事情:picture.save if picture.image_uid#显然这不起作用,而且我没有进行足够彻底的测试。非常感谢,效果很好。也许你应该添加一些代码来说明你的解决方案。当然,他是一个时间旅行者,意味着在rails 4中添加:image\u url到
参数。require(:my\u model)。permit(:foo,:bar,:image\u url)
 => #<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> 
picture.image
picture.image.size