2012-09-07 14 views
5

मुझे हाल ही में अपलोड की गई फ़ाइल के लिए एक मेल (मेलर का उपयोग करके) को एक फ़ाइल संलग्न करने में सक्षम होना चाहिए जो कि किसी भी मॉडल से जुड़ा हुआ नहीं है।मॉडल के बिना कैरियरवेव अस्थायी फ़ाइल

कोड है कि अपलोड फ़ॉर्म के लिए चला जाता है में:

MyMailer.send_mail(params[:mail][:attachment]).deliver 

पैरामीटर [साथ:

<%= form_for(:mail, :url => {:action => 'send_mail'}, :html => {:multipart => true}) do |f| %> 
<table summary="send_table"> 
    <tr> 
    <th>Attachment</th> 
    <td><%= f.file_field(:attachment) %><a id="attachment"></a></td> 
    </tr> 
</table> 

<%= submit_tag "Send!" %> 

अब, मैं क्या send_mail कार्रवाई में करने में देख रहा हूँ कुछ की तरह है: मेल] [: लगाव] फॉर्म के साथ अपलोड की गई अस्थायी फ़ाइल का मार्ग है। कोई ऐसा कैसे कर सकता है?

यह भी एक और प्रश्न का तात्पर्य है: क्या मेल भेजने के बाद मैं मैन्युअल रूप से फ़ाइल को हटा दूं? यदि हां, तो कैसे?

+3

अंततः इसे दबाया: 'जब तक (पैराम [: मेल] [: लगाव])। शून्य? अपलोड करने वाले = AttachmentUploader.new uploader.cache (पैरामीटर [: मेल] [: अनुलग्नक])! @file_name = uploader.filename @file_data = uploader.file.read() end' और उसके बाद 'MyMailer.send_mail (@ file_name, @ file_data) ' – muichkine

+0

यदि आप समाधान को अपने उत्तर के रूप में दोबारा बनाने के लिए गेम हैं, तो मैं अपना जवाब हटा दूंगा। (यह देखने में सहायता के लिए http://meta.stackexchange.com/questions/90263/unansited-question-ansredit-in-comments देखें।) धन्यवाद! – DreadPirateShawn

उत्तर

5

टिप्पणियों से जवाब प्रतिलिपि बनाई जा रही है ताकि "अनुत्तरित" फिल्टर से इस सवाल को दूर करने के:  

unless (params[:mail][:attachment]).nil? 
    uploader = AttachmentUploader.new 
    uploader.cache!(params[:mail][:attachment]) 
    @file_name = uploader.filename 
    @file_data = uploader.file.read() 
end 

और फिर

MyMailer.send_mail(@file_name,@file_data) 

~ जवाब:

अंत में इसे किसी न किसी प्रति user1563325

+0

यह मेरे लिए काम किया! क्या आप जानते हैं कि मैं एकाधिक फ़ाइलों @DreadPirateShawn के लिए एक ही विधि का उपयोग कैसे करूं? अग्रिम में धन्यवाद। – Les

0

मैं इसे टी के लिए जोड़ना चाहता हूं वह यहां वर्णित परिदृश्य है, शायद आपको ऐसी अस्थायी अपलोड स्थिति के लिए कैरियरवेव की आवश्यकता नहीं है। जब अपलोड का उपयोग कर file_field, रेल एक Tempfile में बचत होती है, जिसका पथ आप इस तरह उपयोग कर सकते हैं:

params[:mail][:attachment].path 

इन फ़ाइलों को स्वचालित रूप से हटा रहे हैं ताकि आप उनके बारे में चिंता करने की जरूरत नहीं होनी चाहिए, के रूप में Rails docs व्याख्या करते हैं:

अपलोड की गई फ़ाइलें अस्थायी फ़ाइलें हैं जिनकी आयु एक अनुरोध है। जब वस्तु को अंतिम रूप दिया जाता है रूबी फ़ाइल को अनलिंक करता है, इसलिए उन्हें अलग रखरखाव कार्य के साथ साफ करने की आवश्यकता नहीं होती है।

संबंधित मुद्दे