2012-11-13 11 views
9

मेरे पास मेरे ऐप में एक खोज पृष्ठ है, जहां AJAX खोज फ़ॉर्म है। सर्च फॉर्म खोज को फ़िल्टर करने के लिए मॉडल को पैरामीटर पास करने, और परिणामों के संग्रह को वापस करने वाले मॉडल को सही तरीके से काम करता है। खोज सबमिट करने पर, पेज पर @results प्रस्तुत किए जाते हैं। प्रत्येक @result फिर उस पर एक कार्रवाई के लिए एक लिंक हैं, जैसे:रिमोट के साथ रेल लिंक लिंक: पेज रीफ्रेश के बाद जेएस के बजाय वास्तविक प्रोसेसिंग एचटीएमएल

<%=link_to "Message", message_user_path(:id => user.id), :remote => true%> 

कहाँ नियंत्रक में इस कार्रवाई है:

respond_to :js, :html 
def message 
    @user_id = params[:id] 
    @user = User.find_by_id(@user_id) 
    respond_to do |format| 
    format.html 
    format.js 
    end 
end 

और इस message.js.erb के साथ प्रतिक्रिया है, जो एक से चलाता है मैसेजिंग पैनल उपयोगकर्ता को एक संदेश के साथ पॉप अप करने के लिए। यह सब सही ढंग से काम कर रहा है, लॉग मैं ठीक से पता होना अनुरोध भेजा देख जांच करने और उन्हें सही प्रारूप कार्रवाई की जा रही:

Started GET "https://stackoverflow.com/users/3/message" 
Processing by UsersController#message as JS 

हालांकि, अगर मैं पृष्ठ ताज़ा करें और एक ही लिंक है कि पहले काम कर रहा था क्लिक करने की कोशिश , मुझे त्रुटि टेम्पलेट गुम हो गया है। लॉग की जांच कर रहा है, मैं देखता हूं कि अब दो अनुरोध भेजे गए हैं, पहले एक एचटीएमएल एक ही जेएस अनुरोध।

Started GET "https://stackoverflow.com/users/4/message" 
Processing by StudentsController#message as HTML 
... 
Completed 406 Not Acceptable in 3ms (ActiveRecord: 1.0ms) 

Started GET "https://stackoverflow.com/users/4/message" 
Processing by StudentsController#message as JS 

HTML अनुरोध अनुपलब्ध टेम्पलेट त्रुटि फेंकता है। क्या किसी को पता है कि पृष्ठ को रीफ्रेश करने से रेल रिमोट लिंक पर एचटीएमएल अनुरोध के साथ जवाब देने का प्रयास क्यों करती है?
संपादित करें: routes.rb

resources :students do 
    member do 
     get 'message' 
    end 
end 
+0

निकालने 'respond_to: जे एस,: अपने नियंत्रक में html', तुम नहीं इसे – Thanh

+0

वास्तव में, आप अपने संसाधित प्रारूपों में 'html' को हटा सकते हैं, या जेएस को कॉल करने के लिए लिंक को मजबूर कर सकते हैं: 'link_to" संदेश ", message_user_path (: id => user.id,: format =>: js), रिमोट => सच' –

+0

ओह, और आपके पास सरल ब्राउज़र कैश समस्याएं हो सकती हैं। क्या आपने पृष्ठ को रीफ्रेश करते समय वास्तविक HTML कोड बदल दिया है या नहीं? –

उत्तर

20

अपने app/assets/javascripts/application.js

//= require jquery 
//= require jquery_ujs 

शामिल करता है?

और आपके erb में <%= javascript_include_tag "application" %> है?

मैं एचओआरएस के लिए इस तरह की समस्या से जूझ रहा था और उन दो बिंदुओं में से अंतिम ने इसे तय किया; मैंने कुछ अन्य प्रश्नों में उल्लिखित पहला बिंदु देखा ताकि मैं इसे दोहरा दूंगा।

उम्मीद है कि मदद करता है।

(Credit where credit's due)

+0

यह एक जीवन बचतकर्ता है। बहुत बढ़िया। –

+0

आपके उत्तर के लिए भगवान का शुक्र है !! – Rachel

0

सामान्य तौर पर, जब आप किसी खास बटन या इतने पर link_to का उपयोग करें, जब आप बटन दबाते हैं, as js अनुरोध नियंत्रक को भेज रहा है, लेकिन यह भी संबंधित .js.erb फ़ाइल के लिए खोज करता और इसी तरह।

4

यह सॉल्वर मेरे लिए क्या जोड़ने था: प्रारूप => "js"

अपने मामले में

तो:

<%=link_to "Message", message_user_path(:id => user.id, :format => "js"), :remote => true %> 
संबंधित मुद्दे