2013-10-18 10 views
7

हाय सब मैं jquery फ़ाइल अपलोड के लिए वीडियो ट्यूटोरियल का पालन कर रहा हूं http://railscasts.com/episodes/381-jquery-file-upload पर और अटक गया हूं। मैं अपलोड छवियों के बाद आंशिक रेंडर नहीं करता है, यह नई छवि और अन्य सभी छवियों को छवि के नीचे जोड़ता है जो पहले से जुड़ा हुआ था। इसलिए यदि मैं एक नई वस्तु में दो छवियां जोड़ता हूं तो यह पहली छवि दिखाता है, फिर पहली छवि के साथ आंशिक फिर से प्रस्तुत करता है और दूसरी छवि के साथ दूसरी छवि होती है, इसलिए कुल में 3 फ़ोटो होती हैं।रेलवे में Jquery फ़ाइल अपलोड 4

यहाँ मेरी मेरी शो पेज से प्रस्तुत करना है मेरी create.js.erb

<% if @photo.new_record? %> 
    alert("Failed to upload photo: <%= j @photo.errors.full_messages.join(', ').html_safe %>"); 
<% else %> 
    $("#photos").append("<%=j render @photo %>"); 
<% end %> 

यहाँ है।

<div id="photos"> 
    <%= render 'photos/photo' %> 
</div> 

यहाँ मेरी /photos/_photos.html.erb आंशिक

<h2>Images</h2> 
<div class="photo"> 
<% @rental.photos.each do |photo| %> 
    <p> 
    <strong>Photo:</strong> 
    <%= image_tag photo.image_url.to_s %> 
    </script> 
    </p> 
<% end %> 
</div> 

यहाँ मेरी तस्वीरें नियंत्रक बनाने है

def create 
    @rental = Rental.find(params[:rental_id]) 
    @photo = @rental.photos.create(params[:photo].permit(:image)) 

    respond_to do |format| 
     format.js 
    end 
    end 

यहाँ मेरी photos.js.jcoffee

है
jQuery -> 
    $('#new_photo').fileupload(replaceFileInput: false, 
    paramName: 'photo[image]') 


    dataType: "script" 
    add: (e, data) -> 
     types = /(\.|\/)(gif|jpe?g|png)$/i 
     file = data.files[0] 
     if types.test(file.type) || types.test(file.name) 
     data.context = $(tmpl("template-upload", file)) 
     $('#new_photo').append(data.context) 
     data.submit() 
     else 
     alert("#{file.name} is not a gif, jpeg, or png image file") 
    progress: (e, data) -> 
     if data.context 
     progress = parseInt(data.loaded/data.total * 100, 10) 
     data.context.find('.bar').css('width', progress + '%') 

कोई भी मदद जी होगी रीट, मैं अटक गया हूँ। धन्यवाद!


बहुत धन्यवाद रिच पेक ने अपना जवाब पूरी तरह से मेरी समस्या का समाधान किया। मैं

<% if @photo.new_record? %> 
    alert("Failed to upload photo: <%= j @photo.errors.full_messages.join(', ').html_safe %>"); 
<% else %> 
    $("#photos").append("<%=j render @photo %>"); 
<% end %> 

बदलने के लिए

<% if @photo.new_record? %> 
    alert("Failed to upload photo: <%= j @photo.errors.full_messages.join(', ').html_safe %>"); 
<% else %> 
    $("#photos").html("<%=j render @photo %>"); 
<% end %> 

उत्तर

2
def create 
    @rental = Rental.find(params[:rental_id]) 
    @photo = @rental.photos.create(params[:photo].permit(:image)) 

    respond_to do |format| 
     format.js 
    end 
end 

वह मेरी पहली नजर में यह


ठीक $('#photos').html() उपयोग करने के लिए कंटेनर को बदलने के लिए वास्तव में था पर है करने के लिए किया था। ओपी मूल रूप से कंटेनर में सामग्री जोड़ने के लिए .append का उपयोग कर रहा था, जो सभी

+1

हाय रिच, मदद के लिए धन्यवाद पर बहुत अच्छी तरह से काम नहीं करता था। मैंने अपने निर्माण के लिए answer_ जोड़ा है, और कोई बदलाव नहीं है। मैंने सोचा था कि रेंटल को उत्तर देने के लिए जरूरी है कि इसके ऊपर नियंत्रक को इसकी आवश्यकता हो सकती है, लेकिन मुझे एक्शन कंट्रोलर :: अज्ञातफॉर्मैट मिला जब मैंने किराए पर लेने की कार्रवाई के लिए एक ही जवाब जोड़ा। कोई अन्य विचार? –

+0

ठीक है तो समस्या यह है कि आपका जेएस ठीक से प्रस्तुत नहीं कर रहा है, या आपके create.js.erb में सिंटैक्स त्रुटियां हैं। सबसे पहले, आपको अपने create.js.erb में सभी मौजूदा कोड लेना चाहिए और एक साधारण चेतावनी जोड़ें (यह देखने के लिए कि क्या इसे कहा जा रहा है)। आप इस तरह की एक चेतावनी कॉल कर सकते हैं: 'अलर्ट (' टेस्ट '); ' –

+0

हे अमीर, मैंने जो किया है, मैंने किया है, और अलर्ट काम करता है, इसलिए इसका मतलब यह होना चाहिए कि जेएस ठीक से प्रस्तुत नहीं कर रहा है। क्या इसे ट्रैक करने का कोई तरीका है? –

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