Назначение изображения из URL с помощью Dragonfly - PullRequest
5 голосов
/ 06 января 2012

Я использую 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 гласит:

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> 

Кажется, что я возвращаю строку URL-адреса, которую я пытаюсь дать Dragonfly, а не открываю и вытягиваю изображение, как в форме.

Есть ли что-то, чего мне не хватает при попытке назначить изображение на основе URL-адреса? Кажется, что это должно быть довольно просто, но я не могу заставить что-либо работать в консоли ruby.

Ответы [ 2 ]

8 голосов
/ 08 января 2012

ты уверен, что это не работает? Что происходит, когда вы печатаете (после назначения из URL)

picture.image

или

picture.image.size

например?

Он не установит image_uid до тех пор, пока он не будет сохранен, но у вас есть изображение.

Фактическое извлечение из URL происходит лениво, т. Е. Только при необходимости. Например, вызов 'size' выше вызывает его.

2 голосов
/ 11 февраля 2014

У меня была похожая проблема, когда через форму: image_url не создавал: image_uid при сохранении. В консоли рельсов все работало нормально.

Он работал с: image_url, как только я добавил его в качестве параметра в моем контроллере. Я думал: image будет обрабатывать: image_url при сохранении, но вместо этого мне пришлось явно передать: image_url в качестве параметра для сохранения.

...