2012-01-06 10 views
5

私はRails 3.1アプリで画像を扱うのにDragonflyを使用しています。私はURLを介してモデルに画像を割り当てるのに苦労している。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 %> 

トンボのドキュメントの状態:

トンボは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に基​​づいて画像を割り当てようとしたときに欠けているものがありますか?それはかなりまっすぐ進むべきであるように思われるが、私はルビーのコンソールで動作するように何かを得ることができないようだ。

答えて

8

本当に機能しないのですか?あなたは(URLから割り当てた後)

picture.image 

または例えば

picture.image.size 

を入力するとどうなりますか?

保存するまでimage_uidは設定されませんが、再生できるpicture.imageがあります。

URLからの実際のフェッチは、遅れて、つまり必要なときにのみ発生します。例えば、上記の 'size'を呼び出すとトリガされます。

+0

最初に、すばらしい宝石のためにマークを付けてください。第二に、うわー、私は馬鹿だと感じますか?私はいくつかのフェッチなどをしていた:picture.saveもしpicture.image_uid#明らかにこれは動作しないと私は十分に徹底的にテストしなかった。ありがとう、トンは、素晴らしい作品。 – Kombo

2

私は同様の問題を抱えていましたが、image_urlがimage_uidを作成していないという形で保存しました。すべてがレールコンソールで正常に機能しました。

これは私のコントローラのパラメータとして追加した後は:image_urlで動作しました。私は考えました:image:image_url on save、代わりに明示的に渡す必要があった:image_urlを保存用のパラメータとして渡す。

+0

あなたのソリューションを説明するためにいくつかのコードを追加する必要があります。 –

+0

確かに彼は時間旅行者であり、image_urlを 'params.require(:my_model).permit(:foo、:bar、:image_url)'に追加することを意味します。 –

関連する問題