2012-06-22 25 views
11

Haml Açıklamada: Ben tekrar ediyorum beri Açıkçası çok temizAra Değer yakut, bu şu anda var kodu javascript blok

:javascript 
    // do something 
- if current_user.role? :client 
    :javascript 
     //do something else 

O değil: javascript haml filtresi. Bundan kaçınmak isterdim, ama HAML: javascript bloğu içinde bir Ruby "if" ifadesinin nasıl düzgün yazılacağını bilmiyorum.

# {} ile değişkenleri nasıl arayacağınızı biliyorum, ancak/etc/etc için de aynısını nasıl yaparsınız. ifadeleri?

cevap

-3

Bu oldukça doğru.

Diğer seçenek, bir .js.erb kısmi olarak ekleyebilir ve bunu haml görünümünüzden elde edebilirsiniz.

Sonra sadece onu denemedim

// do something 
<% if condition == true %> 
    // do something else 
<% end %> 
3

yapabilirsiniz ancak ben

:javascript 
    // do something 
- if current_user.role? :client 
    ="//do something else" 

yapabileceğini düşünmek istiyorum (İkinci örnekte here olduğu gibi.)

Çok kısa bir javascript için,

:javascript 
    // do something 
    #{current_user.role? :client ? "//do something else" : ""} 
-1

Sonra, sonra benim düzeninde bir = yield :foot_scripts çağrı yoluyla bu başardığımı:

= if condition 
    - content_for :foot_scripts do 
    - render :partial => "page_specific_javascript" 

benim görünümlerinde - Ben (DOM içinde olmak istediğim yere Javascript sağlayabilmemiz yolu tam olarak yürütülür Diğer her şeyden sonra) ve onu büyük ölçüde temiz olan ayrı bir dosyada saklayın. Görünüm dosyalarınızdan komut dosyası alınıyor musunuz? İYİ!

2

Bunu yapmak: Yukarıdaki durumda

if(#{params[:param_to_check_for].blank? ? "true" : "false"}) 

, koşul params[:param_to_check_for].blank? olduğunu.

Ya olarak JavaScript vermektedir: if(false) veya böyle JS durum için açık JS true veya false içine Yakut/HAML değişken interpolated ettik

+1

Neden doğrudur bir dize ama yanlış bir boole mi? – onebree

+0

@HunterStevens iyi bir sebep değil ... muhtemelen işe yaradığı için :) şimdi düzeltildi. – Caleb

0

if(true):

$("#cancel").click(function() { 
    if (#{ !!my_flag_variable }) 
    window.location.href = "./"; 
    else 
    $("#dialog").hide(); 
});