2010-01-06 19 views
10

jQuery'yi kullanmaya çalışıyorum ve şimdiye kadar kısmi bir işlem yapmaya çalıştığımda her şey harika oldu. div. İşte kurmak ben nasıl olduğunu:Rails, jQuery, .js.erb dosyaları, JS tarayıcı tarafından çalıştırılmadı

ben yanıt bir eylem olması js:

def index 
    @objects = Object.find(:all) 

    respond_to do |format| 
    format.js 
    end 
end 

Ve içinde bazı javascript ile index.js.erb adlı bir şablonu:

alert("hello world"); 

Kundakçı içeren bir "text/javascript" yanıtı verir:

alert("hello world"); 

Ama uyarı penceresi görünmüyorsa, ne de yapar ny diğer JavaScript çalışmaları. http://railscasts.com/episodes/136-jquery 'u kontrol ettim ve daha fazla veya daha az takip ediyorum. Bunun yerine .erb ait .rjs kullanarak ve benim şablonda bu koyarak gibi diğer bazı şeyler denedim:

page.alert("hello world"); 

ama aynı kesin sonuç almak ve tarayıcı asla JS yürütür.

JavaScript'in neden çalıştırılmadığını bilen var mı?

Rails 2.3.4 çalıştırıyorum.

+1

Hiçbir şey jQuery spesifik kullanarak gibi görünen, ama sadece bir not olarak, Prototype değil jQuery ile gemi Raylar yoktur. Geçmek isterseniz jRails'e göz atın. –

cevap

12

Görüntünüzden çağırmanız veya hiçbir zaman çalıştırılmaması gerekir.

bir örnek kontrolörü:

def index 
    @objects = Object.find(:all) 

    respond_to do |format| 
    format.js{ 
     render :text => "alert('hello')" 
    } 
    end 
end 

ve bir index.html.erb: varsayılan olarak

<script type="text/javascript"> 
    $(function(){ 
    $.ajax({ url: '/controller', type: 'get', dataType:'script' }); 
    }); 
</script> 

yerine o kontrolörün endeksi eylemi yürüten gerçek url ile '/ denetleyici', için PostsController '/ posts' olacak ve bu yüzden ...

Eğer rjs'yi seviyorsanız, denetleyicide {} ve everithing'i silersiniz ve bir index.js.erb veya index.rjs dosyası oluşturun:

page.alert("hello world") 

ya:

page << "hello world" 
+0

Durumum, bu eylemin bir html sürümü yok, kesinlikle ajax (sonsuz sayfalandırma) aracılığıyla sayfaları yükleme için. Herhangi bir nedenden ötürü, “render” dediğimde bile: text => "alert ('hello');" respons_to bloğumda hala uyarı gelmiyor, ancak firebug doğru içeriğe sahip bir metin/javascript yanıtı aldığımı söylüyor. – a10s

+4

Eh. dataFype: 'script' ajax çağrımda unuttum. Yardımın için teşekkürler, tek başıma onu yakalayamazdım. – a10s

+0

dataType: 'script' ayrıca jQuery Form Plugin kullanırken beni kurtardı. Js.erb'yi doğru şekilde kurduktan sonra, hala onsuz JavaScript olarak çalışmayacaktır. Teşekkürler! – brokenbeatnik