使用Dragonfly从URL分配图像

时间:2012-01-06 04:48:17

标签: ruby-on-rails ruby ruby-on-rails-3 paperclip dragonfly-gem

我正在使用Dragonfly处理Rails 3.1应用程序上的图像。我正在努力通过网址将图像分配给模型。

我的表格很好:

<%= 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 %>

Dragonfly的文档说明:

Dragonfly提供了一个直接从网址分配的访问者:

@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> 

它似乎正在返回我试图给予Dragonfly的URL的字符串,而不是像在表单中那样打开和拉动图像。

在尝试根据网址分配图片时,是否存在我遗漏的内容?看起来它应该非常直接,但我似乎无法在ruby控制台中运行任何东西。

2 个答案:

答案 0 :(得分:8)

你知道它不起作用吗?键入时(在从URL分配后)会发生什么

picture.image

picture.image.size

例如?

在保存之前不会设置image_uid,但是你可以使用picture.image。

从网址实际获取是偶然发生的,即仅在需要时。例如,调用'size'会触发它。

答案 1 :(得分:2)

我有类似的问题,通过表单,:image_url在保存时没有创建:image_uid。在rails控制台中,一切都运行良好。

一旦我在控制器中添加它作为参数,它就与:image_url一起使用。我想:图像将处理:image_url保存,但我必须明确传递:image_url作为保存的参数。