6

Rails3.1アプリで画像を処理するためにDragonflyを使用しています。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> 

フォームのように画像を開いたりプルしたりするのではなく、Dragonflyに渡そうとしているURLの文字列を返しているようです。

URLに基​​づいて画像を割り当てようとしたときに欠けているものはありますか?かなり簡単なようですが、ルビーコンソールでは何も動作しないようです。

4

2 に答える 2

8

動作していませんか?入力するとどうなりますか(URLから割り当てた後)

picture.image

また

picture.image.size

例えば?

保存されるまでimage_uidは設定されませんが、picture.imageを使用できます。

URLからの実際のフェッチは、必要な場合にのみ、遅延して行われます。たとえば、上記の「サイズ」を呼び出すとトリガーされます。

于 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 に答える