2011-09-19 13 views
5

ठीक है, मैं कुछ समय के लिए अपने रेल ऐप्स में AJAX का उपयोग कर रहा हूं। किसी भी तरह, मेरी पहली रेल में 3.1 एप्लिकेशन मुझे नहीं मूल बातें काम करने के लिए अब प्राप्त कर सकते हैं ..रेलवे में काम करने के लिए यूजेएस नहीं मिल सकता 3.1

# application.js 
//= require jquery 
//= require jquery_ujs 

# the form 
= form_for @signup, :url => '/signup', :remote => true do |f| 
    = f.text_field :email, :class => 'email', :size => 26 
    = f.submit 'Notify me' 

# the controller 
def signup  # route.rb has 'match '/signup' => 'controller#signup' 
    respond_to do |format| 
    format.js 
    end 
end 

# view: signup.js.erb 
alert('wtf?'); 

, से मैं क्या बता सकते हैं, इस पर्चे को जमा चेतावनी बॉक्स सक्रिय होना चाहिए। यह नहीं है फ़ॉर्म जमा नियंत्रक कार्रवाई करने के लिए के माध्यम से जाना है, जो टेम्पलेट प्रस्तुत करना है:

Rendered teaser_pages/signup.js.erb (0.1ms) 
Completed 200 OK in 8ms (Views: 7.2ms | ActiveRecord: 0.0ms) 

केवल कोई js शुरू हो रहा है।

UJS सहायकों भरी हुई और कामकाज हालांकि (मुझे लगता है कि), क्योंकि अगर मैं ऐसा ..

link_to 'click me', '#', :confirm => 'confirmation box!' 

..it एक पुष्टिकरण बॉक्स के रूप में उम्मीद ट्रिगर किया जाएगा रहे हैं।

मुझे क्या याद आ रही है? देखने के लिए कोई भी दिशा की सराहना की जाएगी।

धन्यवाद, इरविन

अद्यतन:

तो यह रेल शीर्षक में गलत सामग्री प्रकार साबित हो रहा है text/javascript के बजाय text/html प्रदान करने, लगता है। यहां तक ​​कि कुछ परीक्षण करने के बाद:

render :js => "alert('AHAHAHAHA');", :content_type => 'text/javascript' 

अभी भी जब मैं यह काम करता है jquery-rails के समान संस्करण के साथ एक नई एप्लिकेशन को चलाने के सामग्री प्रकार text/html

के साथ एक शीर्ष लेख प्रस्तुत करना होगा। इस एप्लिकेशन में यह नहीं है ..

मुझे कहां दिखना चाहिए?

उत्तर

1

मुझे एक ही समस्या मिली। मैंने एक ही ऐप्पल के साथ एक टेस्ट ऐप भी स्थापित किया है और जैसा आपने वर्णन किया है वही परिणाम मिला है: यह नव निर्मित ऐप में काम करता है लेकिन पुराने में नहीं। वास्तविक रेंडर कॉल से पहले मैं सामग्री प्रकार हेडर को हाथ से सेट कर रहा हूं।

respond_to do |format| 
    headers["Content-type"] = 'text/javascript' 
    format.js { render "the_template" } 
end 

यह दूसरी तरफ परिवर्तन नहीं किया content_type सही तरीके से वितरित:

respond_to do |format| 
    format.js { render "the_template", :content_type => 'text/javascript' } 
end 

आशा इस पल के लिए मदद करता है।

क्या आपको इस दौरान वास्तविक समाधान मिला?

अद्यतन:

कम से कम मुझे अपनी असली समस्या मिली। मेरे पास पहले_फिल्टर को टेक्स्ट/एचटीएमएल पर सामग्री/टाइप करने के लिए मजबूर किया गया है जिसे मैंने कुछ समय पहले परीक्षण के लिए जोड़ा था और निष्क्रिय करने के लिए भूल गए:

def set_header 
response.headers["Content-Type"] = "text/html; charset=utf-8" 
end 
संबंधित मुद्दे