2013-03-29 8 views
7

के साथ आंशिक रूप से दृश्य प्रस्तुत करना मेरे ऐप में, मेरे पास एक उपयोगकर्ता प्रोफ़ाइल पृष्ठ है जिसमें तीन टैब और इसके नीचे एक खाली div है। एक डिफ़ॉल्ट टैब है जो सफेद और दो अन्य टैब हैं जो गहरे हैं और "अचयनित" हैं।गतिशील रूप से रेल और jQuery

मैं इसे बनाना चाहता हूं ताकि नीचे दिए गए div में सामग्री आंशिक रूप से प्रस्तुत की जा सके कि किस टैब का चयन किया गया है।

मैं पहले से ही उस बिंदु पर काम कर रहा हूं जहां jQuery मुझे विभिन्न टैब पर क्लिक करने की अनुमति देता है और यह पेज रीफ्रेश किए बिना टैब के रंगों को बदल देता है।

हालांकि, मैं आंशिक रूप से प्रस्तुत करने के लिए आंशिक रूप से प्राप्त करने के तरीके पर अटक गया हूं। इस पर कोई विचार? मैं jQuery पर कौन सा टैब चुना गया है, इस पर आधारित आंशिक रूप से आंशिक रूप से कॉल करने के तरीके पर अटक गया हूं और वास्तव में यह सुनिश्चित नहीं है कि मुझे इसे बनाने के लिए इसके साथ बातचीत करने के लिए किसी अन्य फ़ाइल की आवश्यकता है या नहीं। मैं एक रेल ऐप में jQuery के लिए अपेक्षाकृत नया हूं इसलिए मुझे यकीन नहीं है कि मैंने जो कुछ भी किया है, मैंने किया है।

उपयोगकर्ता प्रोफाइल पेज: एप्लिकेशन> दृश्य> show.html.erb

<ul class="profile-tabs">  

     <%= link_to "<li class=\"tab selected\">Tab 1</li>".html_safe, userprofile_users_path, remote: true %> 
     <%= link_to "<li class=\"tab\">Tab 2</li>".html_safe, userprofile_users_path, remote: true %> 
     <%= link_to "<li class=\"tab\">Tab 3</li>".html_safe, userprofile_users_path, remote: true %> 

    </ul> 

<div id="profile-content"> 

<!--content goes here --> 

</div> 

jQuery: एप्लिकेशन> संपत्ति> javascripts> userprofile.js

$(function() { 
     $("li.tab").click(function(e) { 
      e.preventDefault(); 
      $("li.tab").removeClass("selected"); 
      $(this).addClass("selected"); 
      $("#profile-content").html("<%= escape_javascript(render partial: 
"How can I make this partial name be generated based on the value of the selected li?")%>"); 
     }); 
    }); 

उपयोगकर्ता नियंत्रक: ऐप> नियंत्रक> users_controller । आरबी

class UsersController < ApplicationController 

def show 
    @user = User.find(params[:id]) 
end 

def userprofile 
    respond_to do |format| 
     format.js 
    end 
end 
end 

तीन टैब के अनुरूप तीन आंशिक हैं, और मुझे चाहिए jQuery किसी भी तरह से चयनित टैब के आधार पर आंशिक रूप से आंशिक रूप से परिवर्तित किया जा सकता है।

मैं वास्तव में इसके साथ कुछ मदद की सराहना करता हूं, या यदि कोई अन्य संसाधन है जो मेरे प्रश्न का उत्तर दे सकता है। मैं कुछ भी नहीं ढूंढ पाया जो सीधे जवाब देता है कि मैं क्या करने की कोशिश कर रहा हूं।

अपडेट ------

मैं समाधान प्रदान rails_has_elegance थे, लेकिन कुछ भी नहीं div मैं लक्षित कर रहा हूं में दिखाई दे रहा है। हालांकि, मैं रेल सर्वर उत्पादन है, जो है जैसे कि यह क्या कर रही है लगता है जो मैं चाहता में यह देख रहा हूँ:

Started GET "https://stackoverflow.com/users/currentoffers" for 127.0.0.1 at 2013-03-28 21:20:01 -0500 
Processing by UsersController#currentoffers as JS 
    Rendered users/_offers.html.erb (0.1ms) 
    Rendered users/currentoffers.js.erb (0.8ms) 
Completed 200 OK in 4ms (Views: 3.7ms | ActiveRecord: 0.0ms) 
[2013-03-28 21:20:01] WARN Could not determine content-length of response body. Set  content-length of the response or set Response#chunked = true 

उत्तर

9

आप मापदंडों का एक बहुत से बचने के लिए, बस, एक के लिए अपने नियंत्रक में 3 विभिन्न कार्यों बनाने चाहते हैं प्रत्येक टैब, जो प्रत्येक जेएस को जवाब देता है। फिर कुछ इस तरह के साथ विचारों में प्रत्येक कार्य के लिए एक [कार्रवाई] .js.erb बनाने के लिए: अपने onclick समारोह है कि आंशिक प्रीलोड होगा जबकि,

$("#tab_content").html("<%= escape_javascript(render('tab1')) %>"); 

आप वास्तव में एक ajax अनुरोध के माध्यम से सर्वर के साथ संवाद करने की जरूरत है और आपके पास अब कुछ भी रिमोट नहीं है।

+0

क्षमा js.erb का उपयोग कर यदि यह वास्तव में बुनियादी है सभी 3 पट्टियों के ठीक नीचे एक div में आंशिक प्रस्तुत करना है, लेकिन मुझे देखने अगर मैं समझता हूँ कि तुम क्या कह रहे हैं: 1) बनाएं नियंत्रक में 3 अलग-अलग क्रियाएं 2) लिंक_to टैग में पथ बदलें 2) ऊपर दिए गए कोड को [action] .js में रखें।ऐप के भीतर संग्रहीत एरब फ़ाइलें> विचार> उपयोगकर्ता निर्देशिका? क्या आपके द्वारा वर्णित AJAX अनुरोध को संभालने के लिए मुझे कुछ अतिरिक्त लिखने की ज़रूरत है? – Zephyr4434

+0

मुझे लगता है कि उन 3 चरणों को यह करना चाहिए :) रिमोट: प्रत्येक कार्रवाई में सत्य महत्वपूर्ण है और answer_to format.js है। –

+0

मैंने बिल्कुल यह किया, लेकिन जब मैं किसी एक टैब पर क्लिक करता हूं, तो खाली div आंशिक रूप से भरा नहीं जाता है जिसे मैं कॉल करने का प्रयास कर रहा हूं। अजीब। – Zephyr4434

0

3 अलग-अलग टैब के लिए तीन स्थितियों वाले नियंत्रक में एक क्रिया लिखें। किसी भी टैब पर क्लिक करके AJAX को कॉल करें, पहचान पैरामीटर पास करें 'टैब 1' या 'टैब 2' या 'टैब 3' और यदि आवश्यक हो तो आवश्यक पैरामीटर भी कहें। नियंत्रक में , पैरामीटर प्राप्त करें और मॉडल फ़ंक्शन कॉल करें जिसमें वास्तविक व्यावसायिक तर्क शामिल है।

एक नियंत्रक में परिणाम हो और बस

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