6

我正在使用 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 %>

蜻蜓的文档指出:

Dragonfly 提供了一个访问器,用于直接从 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> 

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

尝试根据 url 分配图像时,我是否遗漏了什么?看起来它应该很简单,但我似乎无法在 ruby​​ 控制台中得到任何东西。

4

2 回答 2

8

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

picture.image

或者

picture.image.size

例如?

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

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

于 2012-01-08T11:49:13.763 回答
2

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

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

于 2014-02-11T19:20:13.493 回答