9

मैं निम्नलिखित का प्रयास कर रहा हूं। एक ग्राहक मुख्य रूप में विकल्प का चयन करें। जब कोई उपयोगकर्ता मुख्य रूप में ग्राहक का चयन करता है तो उसके बिल सभी बाद के आंशिक भाग में दिखाई दे सकते हैं।रेल पर रूबी में आंशिक डेटा पर jQuery द्वारा निष्पादित डिफ़ॉल्ट कार्रवाई

मैं आंशिक प्राप्त करने के लिए रयान बेट्स के नेस्टेड_फॉर्म मणि का उपयोग कर रहा हूं। कोड निम्नानुसार है।

<%= simple_nested_form_for @money_receipt do |f| %> 

    <div class="customers"><%= f.collection_select :customer_id, Customer.all, :id, :name, options ={:prompt => "-Select a Customer"}, :style=>'width:210px;'%></div><br /> 
    /*rest of the code*/ 

    <%= f.link_to_add "Add line items", :money_receipt_line_items %> 

आंशिक

<div class="bill"> 
<%= f.collection_select :customer_bill_id, CustomerBill.all,:id,:id, {:prompt => "Select Customer bill"}, :style => 'width:202px;' %></div><br /> 

/*rest of the code*/ 
ऊपर के लिए

jQuery कोड के अंदर के रूप में नियंत्रक मेरे पास है में

jQuery(document).ready(function(){ 
    jQuery(".customers select").bind("change", function() { 
     var data = { 
     customer_id: jQuery(this).val() 
     } 
     jQuery.getJSON(
     "/money_receipts/get_bills", 
     data, function(data){ 
     var result = "",a,x; 
     var b = "<option>Select customer Bill</option>" 
     for(i=0;i<data.length; i++) 
     { 
     a = data[i]; 
     result = result + "<option value="+a[0]+">"+a[0]+"</option>"; 
     console.log(result); 
     } 
    child=jQuery('.bill select').html(b+result); 
    }); 
    }); 
    }); 

अनुसरण करता है और अंत में है। डीईएफ़ get_bills

@bill_amount = CustomerBill.find_all_by_customer_id(params[:customer_id]).map{|bill| [bill.id]} if params[:customer_id] 
    respond_to do |format| 
     format.json { render json: @bill_amount } 
    end 
    end 

मैं बिल फिल्टर करने के लिए प्रयास कर रहा था और div id bill में डाल दिया। अब अगर मैं jQuery कोड में console.log करता हूं तो मुझे ग्राहक_आईडी और बिल मिल रहे हैं लेकिन मैं इसे पोस्ट करने में सक्षम नहीं हूं। अगर मैं पर console.log करता हूं तो मुझे jQuery() के रूप में आउटपुट मिलता है। मुझसे कहां गलती हो रही है? क्या ऊपर प्राप्त करने का एक बेहतर तरीका है? मार्गदर्शन आवश्यक है। अग्रिम में धन्यवाद।

उत्तर

7

मैं जेएस कोड के साथ इसे चित्रित करने के बजाय HTML को आंशिक रूप से डालने का तरीका पसंद करता हूं।

इस तरह

:

money_receipt.js:

$('.customers select').change(function(){ 
    $.getScript('/money_receipts/get_bills?customer_id='+$(this).val()) 
}) 

get_bills.js.erb:

$('.bill select').html('<%=j render 'get_bills'%>') 

_get_bills.html.erb:

<% @bills.each do |bill| %> 
<option value="<%=bill.id%>"><%=bill.title%></option> 
<% end %> 
कम लाइनों के साथ

कोड के अंदर त्रुटियों के लिए कम जगहें हैं

+0

धन्यवाद, यह बहुत अच्छा है :) लेकिन उपरोक्त विधि को नेस्टेड फॉर्म के लिए कैसे लागू करें? अगर मैं गलत हूं तो मुझे सही करें मेरा मानना ​​है कि यह केवल एक आंशिक पर लागू होता है। – deeraj

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