पर मैं माइकल हार्टल द्वारा रेल ट्यूटोरियल के माध्यम से जा रहा हूं और §12.2.5 पर एक छोटा सा झटका लगा जहां हमें एक काम करने वाला बटन बनाना है अजाक्स के साथ मुझे पता है कि कोड सही है (मैं इसे पुस्तक से सीधे कॉपी कर रहा हूं और इसे तीन बार पुनः टाइप कर रहा हूं) और मैं हरा हूं। लेकिन यह वास्तव में काम नहीं करता है!बटन अजाक्स में अपडेट नहीं होता है - रेल ट्यूटोरियल 3 §12.2.5
ट्यूटोरियल के इस हिस्से के माध्यम से हम अजाक्स के साथ काम करने के लिए नियमित रूप से सबमिट बटन बदल रहे हैं ताकि पूरा पृष्ठ "रीफ्रेश" न हो (वास्तव में, उसी पृष्ठ पर रीडायरेक्ट न हो) और इसके बजाय बस बटन और संबंधित साइडबार आइटम अपडेट। समस्या यह है कि बटन क्लिक करने पर स्वचालित रूप से पुनः लोड नहीं होता है जैसा कि मैं उम्मीद कर रहा हूं। यह एक पेज रीफ्रेश पर पुनः लोड करता है। यदि मैं अपने ब्राउज़र में जेएस को अक्षम करता हूं, तो यह बदल जाता है - जैसा कि यह होना चाहिए - एचटीएमएल संस्करण के लिए जो एक रीडायरेक्ट को ट्रिगर करता है और पूरे पृष्ठ को "रीफ्रेश करता है"। यदि आप सोच रहे हैं, तो मैंने पृष्ठ को रीफ्रेश करने का प्रयास किया है और मैंने फ़ायरफ़ॉक्स, सफारी और क्रोम और क्रोम को गुप्त में आज़माया है। मैंने रेल सर्वर, स्पार्क और ऑटोटेस्ट को बंद कर दिया है और फिर से शुरू किया है। और मैंने सभी कोड को फिर से लिखा है और फिर सभी पुस्तक के कोड की प्रतिलिपि बनाई है। अभी भी स्टंप
तो परीक्षण हालांकि हरा है, मेरे पास एक अपूर्ण रूप से काम करने वाला कार्य है। शायद कुछ ऐसा है जो मुझे याद आ रहा है और आप इसे ढूंढने में मेरी मदद कर सकते हैं?
relationships_controller.erb:
class RelationshipsController < ApplicationController
before_filter :authenticate
def create
@user = User.find(params[:relationship][:followed_id])
current_user.follow!(@user)
respond_to do |format|
format.html { redirect_to @user }
format.js
end
अंत
def destroy
@user = Relationship.find(params[:id]).followed
current_user.unfollow!(@user)
respond_to do |format|
format.html { redirect_to @user }
format.js
end
end
end
शायद मैं एक javascreipt से संबंधित मणि, एक अजाक्स मणि ...
कोड के प्रासंगिक भागों याद कर रहा हूँ _follow.html.erb:
<% = form_for (current_user.relationships। बिल्ड (: follow_id => @ user.id), : दूरस्थ => सत्य) करें | f | %> <% = f.hidden_field: followed_id%>
<% = f.submit "फोलो"%> <% अंत%>
_unfollow.html.erb:
<%= form_for(current_user.relationships.find_by_followed_id(@user),
:html => { :method => :delete },
:remote => true) do |f| %>
<% अंत%>
create.js.erb
$("follow_form").update("<%= escape_javascript(render('users/unfollow')) %>")
$("followers").update('<%= "#{@user.followers.count} followers" %>')
destroy.js.erb
$("follow_form").update("<%= escape_javascript(render('users/follow')) %>")
$("followers").update('<%= "#{@user.followers.count} followers" %>')
मैं भी सुनिश्चित किया कुछ और आप स्थिति का आकलन करने की जरूरत है, तो यह है कि इस लाइन application.html.erb
<%= javascript_include_tag :defaults %>
में शामिल है , कृपया पूछें और मैं एक अपडेट के साथ जवाब दूंगा।
TIA
फ़ायरबग जैसे उपकरण भी (के साथ फ़ायरफ़ॉक्स) या डेवलपर टूल्स जो क्रोम के साथ आता है, यह देखने के लिए कि क्या हो रहा है। उदाहरण के लिए, यदि आप डेवलपर टूल लाने के लिए मैक हिट कमांड-विकल्प-पर क्रोम का उपयोग करते हैं। 'कंसोल' टैब पर क्लिक करें, फिर भी अपने AJAX को जो भी आग लगाना क्लिक करें। अगर जेएस त्रुटियां हैं तो आप उन्हें यहां देखेंगे। अतीत में, मैंने पाया कि मेरे AJAX अनुरोधों को ठीक से प्रारूपित नहीं किया गया था जिससे जेएस त्रुटियों को फेंकने का कारण बनता है। मैं रेलों में समस्याओं की तलाश में था लेकिन समस्या वास्तव में AJAX प्रतिक्रिया में थी और ब्राउज़र इसे पकड़ रहा था, रेल नहीं (इसलिए यह मेरे लॉग में दिखाई नहीं दे रहा था) – Dty
हम्बलडेसी, क्या आप इसे हल करने में सक्षम थे? मेरे पास एक ही समस्या है - परिणाम रेल से लौटाया गया है (जिसे मैंने http sniffer का उपयोग करने की पुष्टि की है) परिवर्तन को ट्रिगर नहीं करता है, लेकिन यदि आप डीबगर पर कोड पेस्ट करते हैं तो यह काम करता है। मैं चकरा गया हूं। – chesterbr