2010-02-25 20 views
8

Farklı bir seçimde seçime bağlı olarak popülasyona izin veren bir seçimim var Bunu yapmak için, 'Dinamik Seçim Menülerinde' Demişti # 88'de önerilenleri yaptım.javascript'ten bir kısmi bölüm oluşturma

Fakat şimdi, bu seçimlerin her birinde seçilen değerden kısmi olarak geçiş yapmam gerekiyor. Seçimde onchange olayı'ndan bir yöntem çağrısının nasıl tetikleneceğini anlayamıyorum, bu yüzden render çağırması gerektiğini düşünüyorum: select değişiklik olayını algılayan javascript işleyicisinin içinden kısmi. Ama nasıl olduğunu anlayamıyorum. Ben (.js.erb dosyasında) javascript yönteminde aşağıdaki çalıştı ama umduğu gibi çalışmıyor:

function staffSelected() { 
    $('date_area').show(); 
    <% render :partial => "calendar" -%> 
} 

Herkes iyi bir çözüm var mı?

+2

Aa, ve bu gerçekten sadece başlamak olduğunu Bu erb hattı hiçbir şey üretmiyor çünkü '<%' yerine '<% =' olması gerekiyor. Bunun da ötesinde, o kısmi içeriği yüklemeniz gerekecek, aradığınız davranış hakkında daha spesifik olmalısınız. – tfwright

cevap

5

Değişiklik olaylarını algılamak için kısmi olarak JavaScript'in içine işlenemezsiniz. Ruby sunucu tarafındadır ve JavaScript istemci tarafındadır. JavaScript'inizin çalışması sırasında, Ruby'niz zaten normal bir 'HTML'ye ayrıştırılmıştır.

onchange olay sunucu vurmak (Prototip/scriptaculous olanlar vardır) bir AJAX denetimi kullanın:

En iyi bahis aşağıdaki yapmaktır. Sunucunuz, diğer açılır menüleri (veya) güncelleştirmek için RJS'yi geri gönderebilir, standart JSON'u geri döndürebilir ve AJAX çağrısının onSuccess yönteminde manuel olarak diğer açılır menüleri de doldurabilirsiniz.

+0

Oh, vay, bunun statik bir dosya olduğunu anlamadım bile; Birden çok kez vurduklarını sanıyordum. – Matchu

+0

Ben bunun statik bir dosya olduğuna inanıyorum. Soru bu konuda biraz belirsiz. –

+0

Ah evet, statik bir dosyada. – 99miles

8

Bence bu aradığınız şey. Ben kısmi seçilen radyo düğmesinin value kırmızı olması halinde oluşturulur, "renkler" kimliğine sahip bir DIV içinde kısmi çevirdim: Bir kere, iyi,

<script language="javascript" type="text/javascript"> 
jQuery(function($){ 
    $('#radio-buttons input[type=radio]').click(function() { 
    if ($(this).attr("value") === "red") { 
     $("#colors").html('#{escape_javascript(render :partial => "colors")}'); 
    } 
    }); 
}); 
</script> 
+0

Denedim. Bu sadece metin olarak sayfadaki # {escape_javascript (render: partial => "")} yazdı. – Bongs

+2

@Bongs Bunun bir .erb dosyasına gireceği varsayılır, böylece ruby, # {escape_javascript (render: partial => "")}, bir dizgi değişmezi olarak yorumlanmak yerine uygun şekilde değiştirilir. – jeconner

+1

Birkaç önemli şey. Bir .erb dosyasında bile, dizenizi <%= %> içine sarmanız ve çift tırnak kullandığınızdan emin olmanız gerekir. Ruby, tek tırnak işareti ile dize enterpolasyonu yapmaz. Bu aynı zamanda sadece bir kez gerçekleşecek. Soru açıkça bir javascript eylemi üzerinde işlemek için arıyor. downvoted – TheJKFever

İlgili konular