मैं एक "टेम्पलेट" को "प्रतिपादन" के विचार के बारे में थोड़ा उलझन में आया हूं, जिस तरह से लेखक एक पुस्तक में इसके बारे में बोलता है ।रेल: वास्तव में इसका मतलब है कि "टेम्पलेट प्रस्तुत करना"
"एक टेम्पलेट प्रतिपादन" की मेरी मूल समझ यह थी कि इसका मतलब यह था कि रेल स्क्रीन पर दिखाई देने वाली सामग्री/दर्शकों को प्रस्तुत की जाती है (जिस तरह से आंशिक रूप से प्रस्तुत किया जाता है) लेकिन पुस्तक मैं हूं ऐसा लगता है कि कुछ और मतलब है कि "टेम्पलेट प्रतिपादन" की अवधारणा का उपयोग करना प्रतीत होता है। मुझे संदर्भ
यह पुस्तक (कार्रवाई में रेल 3) पारंपरिक layouts/application.html.erb
फ़ाइल का उपयोग करके एक पृष्ठ लेआउट सेट करती है, और फिर यह views/tickets/show.html.erb
जैसे विभिन्न दृश्य पृष्ठों को "उपज" देती है जो स्क्रीन पर अधिक सामग्री जोड़ती है। यह सब सीधा है ..
इस दृश्य के भीतर views/tickets/show.html.erb
, आंशिक (जो एक सीधी अवधारणा भी है) का एक प्रतिपादन है।
<div id='tags'><%= render @ticket.tags %></div>
अब इस आंशिक भीतर नहीं है, ajax का उपयोग कर, "tags_controller.rb" जो अधिकृत उपयोगकर्ताओं के लिए एक "टिकट" से एक "टैग" दूर करने के लिए अनुमति देने के लिए डिज़ाइन किया गया है में "निकालें" विधि के लिए एक कॉल हमारे नकली परियोजना प्रबंधन आवेदन में।
<% if can?(:tag, @ticket.project) || current_user.admin? %>
<%= link_to "x", remove_ticket_tag_path(@ticket, tag),
:remote => true,
:method => :delete,
:html => { :id => "delete-#{tag.name.parameterize}" } %>
<% end %>
अब यहाँ टैग नियंत्रक में "निकालें" कार्रवाई (जो डेटाबेस में टिकट से टैग disassociates) ...
def remove
@ticket = Ticket.find(params[:ticket_id])
if can?(:tag, @ticket.project) || current_user.admin?
@tag = Tag.find(params[:id])
@ticket.tags -= [@tag]
@ticket.save
end
end
end
इस निकालें कार्रवाई के अंत में है, लेखक मूल रूप से render :nothing => true
शामिल थे, लेकिन फिर उन्होंने कार्रवाई को संशोधित किया क्योंकि, जैसा कि वे कहते हैं, "आप इसे एक टेम्पलेट प्रस्तुत करने जा रहे हैं।" यहाँ है जहाँ मैं भ्रमित हो रहा है
है कि वह इस कार्रवाई हो जाता है रेंडर करने के लिए टेम्पलेट "remove.js.erb" है, जो केवल इसके अंदर jQuery में से एक लाइन है, जिसका उद्देश्य है से "टैग" दूर करने के लिए है पृष्ठ (यानी वह टैग जिसे उपयोगकर्ता स्क्रीन पर देखता है) अब यह डेटाबेस में टिकट से अलग हो गया है।
$('#tag-<%= @tag.name.parameterize %>').remove();
जब मैंने पढ़ा है "एक टेम्पलेट प्रतिपादन" मैं उम्मीद आवेदन पेज में सामग्री डालने जा करने के लिए है, लेकिन नियंत्रक में "निकालें" कार्रवाई द्वारा प्रदान की गई टेम्पलेट केवल एक jQuery समारोह है कि से एक तत्व को हटा कॉल पन्ना।
यदि कोई "टेम्पलेट" "प्रस्तुत किया गया" है, तो मुझे उम्मीद है कि एक और टेम्पलेट हटाया जाएगा (नए टेम्पलेट के लिए जगह बनाने के लिए), या मैं इस सामग्री को "प्रस्तुत" करने की अपेक्षा कर रहा हूं एक आंशिक प्रदान किया जाता है। क्या आप इस प्रश्न में jquery के साथ स्थिति में "टेम्पलेट" "rendered" जब वास्तव में क्या हो रहा है स्पष्ट कर सकते हैं? क्या यह वास्तव में उपयोगकर्ता के सामने एक नया पृष्ठ डालने वाला है (मुझे उम्मीद है कि किसी प्रकार का भौतिक पृष्ठ प्रस्तुत किया जाएगा)
+1 एक अच्छी तरह लिखित प्रश्न – bragboy