2011-05-27 6 views
10

पर मैं माइकल हार्टल द्वारा रेल ट्यूटोरियल के माध्यम से जा रहा हूं और §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

उत्तर

0

मैं एक ही मुद्दे के खिलाफ मेरे सिर पीटने की है। मेरे पास अभी तक कोई समाधान नहीं है, लेकिन मैंने सोचा कि मैं कुछ कोशिशों के साथ गेंद को आगे बढ़ने में सक्षम हो सकता हूं।

सबसे अधिक संभावित लीड यह है। चीजों को सरल बनाने की कोशिश में मैंने jQuery कोड को खत्म करने की कोशिश की है। ऐसा करने के लिए, मैंने पृष्ठ पर स्क्रिप्ट का परीक्षण करने के लिए सफारी के इंस्पेक्ट एलिमेंट/स्क्रिप्ट कंसोल का उपयोग किया है।

मैं अहानिकर

$('title').text("Create") 

लाना इस सफारी सांत्वना शीर्षक बदल जाता है के साथ जाने का फैसला किया। इसे मेरे create.js.erb में डालकर और मेरी dest.js.erb फ़ाइलें काम नहीं करती हैं (जब मैं अनुवर्ती/अनुवर्ती बटन पर क्लिक करता हूं)। मेरे लॉग दिखा रहे हैं कि उचित रिश्तों/dism.js.erb दृश्य को बुलाया जा रहा है लेकिन तत्व ताज़ा नहीं होता है (और पृष्ठ पुनः लोड नहीं होता है)।

Rendered layouts/_stylesheets.haml (3.3ms) 
Rendered layouts/_header.haml (6.1ms) 
Rendered layouts/_footer.haml (3.8ms) 
Rendered relationships/destroy.js.erb within layouts/application (34.8ms) 
Completed 200 OK in 132ms (Views: 39.0ms | ActiveRecord: 1.3ms) 

यह लोड करने वाली आखिरी बात है। मेरे रिश्ते_ नियंत्रक उपरोक्त के समान हैं। मेरे रूप पुस्तक (लेकिन हैमल में) के समान हैं और मैंने हैमल की जिथब हैमल शाखा पर पोस्ट की गई हैमल को बदल दिया है।

तो, मेरा मानना ​​है कि create.js.erb और destory.js.erb फ़ाइलों को लोड किया जा रहा है लेकिन किसी कारण से निष्पादित नहीं किया गया है। क्या किसी के पास कोई विचार है कि इसका निदान/हल करने के बाद क्या प्रयास करना है?

धन्यवाद,

डेव

+0

फ़ायरबग जैसे उपकरण भी (के साथ फ़ायरफ़ॉक्स) या डेवलपर टूल्स जो क्रोम के साथ आता है, यह देखने के लिए कि क्या हो रहा है। उदाहरण के लिए, यदि आप डेवलपर टूल लाने के लिए मैक हिट कमांड-विकल्प-पर क्रोम का उपयोग करते हैं। 'कंसोल' टैब पर क्लिक करें, फिर भी अपने AJAX को जो भी आग लगाना क्लिक करें। अगर जेएस त्रुटियां हैं तो आप उन्हें यहां देखेंगे। अतीत में, मैंने पाया कि मेरे AJAX अनुरोधों को ठीक से प्रारूपित नहीं किया गया था जिससे जेएस त्रुटियों को फेंकने का कारण बनता है। मैं रेलों में समस्याओं की तलाश में था लेकिन समस्या वास्तव में AJAX प्रतिक्रिया में थी और ब्राउज़र इसे पकड़ रहा था, रेल नहीं (इसलिए यह मेरे लॉग में दिखाई नहीं दे रहा था) – Dty

+0

हम्बलडेसी, क्या आप इसे हल करने में सक्षम थे? मेरे पास एक ही समस्या है - परिणाम रेल से लौटाया गया है (जिसे मैंने http sniffer का उपयोग करने की पुष्टि की है) परिवर्तन को ट्रिगर नहीं करता है, लेकिन यदि आप डीबगर पर कोड पेस्ट करते हैं तो यह काम करता है। मैं चकरा गया हूं। – chesterbr

1

मैं रेल 3.1.1 का उपयोग कर 'और रेल निम्नलिखित 3.0 ट्यूटोरियल एक ही मुद्दा था। संस्करण अद्यतन में रेल प्रोटोटाइप से दूर चले गए हैं और jQuery का उपयोग करना शुरू कर दिया है। जावास्क्रिप्ट के पुराने संस्करण को सही करने के लिए मुझे create/destroy.js.erb को अद्यतन करना था।

आप इसके बारे में chapter 13 में पढ़ सकते हैं। यह आपके टैग आईडी के सामने "#" जोड़ने और ".update" कॉल को ".html" के साथ बदलने के लिए उबलता है।

6

आप किस रेल का उपयोग कर रहे हैं?

$("#follow_form").html("<%= escape_javascript(render('users/unfollow')) %>") 
$("#followers").html('<%= "#{@user.followers.count} followers" %>') 

और destroy.js.erb लिए:

$("#follow_form").html("<%= escape_javascript(render('users/follow')) %>") 
$("#followers").html('<%= "#{@user.followers.count} followers" %>') 

(सूचना अतिरिक्त #) पर इसकी इसकी 3.1 यदि आप बदलना

create.js.erb करने के लिए है ट्यूटोरियल का आखिरी अध्याय, रेलों में बदलने के नोट 3.1

0

Ive को हाल ही में रेल 4 के साथ यह समस्या थी

वेबसर्वर चलाने/पालन पर क्लिक करें, फिर अपने वेब सर्वर लॉग

के लिए वापस जाने का अनुसरण करना बंद त्रुटि को देखने

मैं एक त्रुटि प्रस्तुत करना आईडी शून्य

क्योंकि मैं चर @user अद्यतन था था relationship_controller में।कोड के अंत के लिए लेकिन पहली पंक्ति जहां मैं इसे

परिभाषित डीईएफ़ उपयोगकर्ता = User.find ([: followed_id] पैरामीटर) बनाने पर नहीं ERB | प्रारूप current_user.follow (उपयोगकर्ता) कर respond_to | format.html {redirect_to @user} format.js अंत अंत

साथ तय डीईएफ़ @ उपयोगकर्ता बनाने = User.find (पैरामीटर [: followed_id]) current_user.follow (@user) प्रतिक्रिया_ करने के लिए | प्रारूप | format.html {redirect_to @user} format.js अंत अंत

एक ही फिर से नष्ट करने के लिए - तो @user के साथ उपयोगकर्ता के सभी उदाहरणों को अद्यतन

चियर्स