2012-01-06 10 views
5

के साथ यूआरएल से छवि असाइन करना मैं रेल 3.1 ऐप पर छवियों को संभालने के लिए ड्रैगनफ्लाई का उपयोग कर रहा हूं। मैं यूआरएल के माध्यम से एक मॉडल को छवियों को आवंटित करने के साथ संघर्ष कर रहा हूं।ड्रैगनफ्लाई

मैं एक के रूप में इस काम कर ठीक:

<%= 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 एक यूआरएल से सीधे असाइन करने के लिए एक्सेसर प्रदान करता है: अभी तक जब

@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 की स्ट्रिंग को वापस कर रहा हूं जिसे मैं ड्रैगनफ्लाई को देने की कोशिश कर रहा हूं, फॉर्म को खोलने और खींचने की कोशिश नहीं कर रहा हूं।

क्या यूआरएल के आधार पर छवि को असाइन करने का प्रयास करते समय मुझे कुछ याद आ रही है? ऐसा लगता है कि यह बहुत सीधे आगे होना चाहिए लेकिन मुझे रूबी कंसोल में काम करने के लिए कुछ भी नहीं मिल रहा है।

उत्तर

8

क्या आप वाकई काम नहीं कर रहे हैं? जब आप (किसी URL से बताए के बाद) टाइप

picture.image 

या

picture.image.size 
उदाहरण के लिए

क्या होता है?

यह छवि सहेजने तक image_uid सेट नहीं करेगा, लेकिन आपके पास play.image के साथ खेलने के लिए उपलब्ध है।

यूआरएल से वास्तविक fetching आलसी होता है, यानी केवल जब आवश्यक हो। उपरोक्त 'आकार' को कॉल करना, उदाहरण के लिए इसे ट्रिगर करता है।

+0

सबसे पहले, अद्भुत मणि के लिए धन्यवाद मार्क। दूसरा, वाह मैं मूर्खतापूर्ण महसूस करता हूँ। मैं कुछ fetching और कुछ ऐसा कर रहा था: picture.save अगर तस्वीर.image_uid # जाहिर है यह काम नहीं करेगा और मैंने पूरी तरह से पर्याप्त परीक्षण नहीं किया। धन्यवाद एक टन, महान काम करता है। – Kombo

2

मुझे एक समान समस्या थी, जहां एक फॉर्म के माध्यम से: image_url सहेजने पर image_uid नहीं बना रहा था। रेलवे कंसोल में सब ठीक काम किया।

यह मेरे नियंत्रक में एक param के रूप में जोड़ा गया है: image_url के साथ काम किया। मैंने सोचा: छवि संभाल लेगी: image_url को बचाने पर, लेकिन इसके बजाय मुझे स्पष्ट रूप से पास करना पड़ा: image_url को बचाने के लिए एक param के रूप में।

+0

हो सकता है कि आपको अपने समाधान को चित्रित करने के लिए कुछ कोड जोड़ना चाहिए। –

+0

निश्चित रूप से वह एक समय यात्री है और इसका मतलब है: image_url 'params.require (: my_model) .permit (: foo,: bar,: image_url)' रेल में 4। –