मेरे पास मेरे ऐप में एक खोज पृष्ठ है, जहां 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
निकालने 'respond_to: जे एस,: अपने नियंत्रक में html', तुम नहीं इसे – Thanh
वास्तव में, आप अपने संसाधित प्रारूपों में 'html' को हटा सकते हैं, या जेएस को कॉल करने के लिए लिंक को मजबूर कर सकते हैं: 'link_to" संदेश ", message_user_path (: id => user.id,: format =>: js), रिमोट => सच' –
ओह, और आपके पास सरल ब्राउज़र कैश समस्याएं हो सकती हैं। क्या आपने पृष्ठ को रीफ्रेश करते समय वास्तविक HTML कोड बदल दिया है या नहीं? –