2011-02-01 3 views
5

Saluti!Sostituzione ERB con errore HAML in JS

Ho scherzato con HAML e ho convertito alcune viste parziali da .erb a .haml. Ma quando ho provato a convertire la vista .js.erb, non lo eseguirò. Per esempio. sembra che il mio .js.haml non venga eseguito mentre .js.erb funziona come dovrebbe essere.

Ecco la mia .js.erb (che funziona così):

<% if @quote.errors.any? && @quote.approved? %> 
    $("#data_form").html("<%= escape_javascript(render(:partial => "form")) %>"); 
<% else %> 
    $("#data_grid").prepend("<%= escape_javascript(render :partial => "quote", :locals => { :quote => @quote }) %>"); 
    $("#quote_author,#quote_body").each(function(i,e) { 
    $(this).val(""); 
    }); 
<% end %> 

Ed ecco che cosa sto sostituendolo con:

-if @quote.errors.any? && @quote.approved? 
    $("#data_form").html("#{escape_javascript(render(:partial => "form"))}"); 
-else 
    $("#data_grid").prepend("#{escape_javascript(render :partial => "quote", :locals => { :quote => @quote })}"); 
    $("#quote_author,#quote_body").each(function(i,e) { 
    $(this).val(""); 
    }); 

Qual è il problema e come risolverlo?

+0

vuoi dire che il javascript non viene eseguito? Hai controllato qual è la risposta che ottiene il browser (controlla ad esempio Firebug). – Heikki

+0

Questa è in realtà una domanda piuttosto importante, non so perché alcuni altri sostengono altrove che ".js.haml" non è supportato – prusswan

risposta

12

Prova:

-if @quote.errors.any? && @quote.approved? 
    :plain 
    $("#data_form").html("#{escape_javascript(render(:partial => "form"))}"); 
-else 
    :plain 
    $("#data_grid").prepend("#{escape_javascript(render :partial => "quote", :locals => { :quote => @quote })}"); 
    $("#quote_author,#quote_body").each(function(i,e) { 
     $(this).val(""); 
    }); 
+1

@shybovycha: grazie per aver sollevato questa domanda. @PeterWong: thans per rispondere :) +1 – Pravin

+0

@Pravin, siete i benvenuti! =) – shybovycha