2012-01-06 71 views
5

我使用Dragonfly處理Rails 3.1應用程序中的圖像。我正在努力通過url將圖像分配給模型。用蜻蜓從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> 

它似乎是返回我試圖給蜻蜓的URL的字符串,而不是像在窗體中打開和拉動圖像。

有沒有什麼我失蹤時試圖分配一個基於網址的圖像?它似乎應該是非常簡單的,但我似乎無法得到任何東西在ruby控制檯中工作。

回答

8

你確定它不工作嗎?當你輸入(從網址分配後)

picture.image 

picture.image.size 

例如,會發生什麼?

它將不會設置一個image_uid直到它被保存,但你有picture.image可供玩。

實際從url中獲取的內容只是在需要的時候纔會發生。例如,調用上面的'尺寸'會觸發它。

+0

首先,謝謝馬克的驚人的寶石。其次,哇,我感到很傻。我正在做一些提取和類似的東西:picture.save if picture.image_uid#顯然這不起作用,我沒有足夠徹底的測試。謝謝你,很好。 – Kombo 2012-01-09 19:37:24

2

我有一個類似的問題,通過一個表單,image_url沒有創建一個:image_uid保存。在軌道控制檯中一切正常。

一旦我將它作爲參數添加到控制器中,它就可以與:image_url一起使用。我想:image保存時會處理:image_url,但我必須明確地傳遞:image_url作爲保存的參數。

+0

也許你應該添加一些代碼來說明你的解決方案。 – 2014-02-11 19:38:15

+0

當然他是時間旅行者,意思是在rails 4中將'image_url'添加到'params.require(:my_model).permit(:foo,:bar,:image_url)'中。 – 2014-06-20 00:47:59