2010-05-20 14 views
0

Utilisation de Rails 3: Dans mon fichier update.js.erb, j'ai trouvé que je répétais beaucoup de choses. J'ai donc essayé de tout mettre dans une aide. Mais j'ai du mal à obtenir l'aide de rendre le javascript propre. Il met en \" partout au lieu de "comment retourner le javascript propre à partir d'une aide personnalisée de rails3?

Voici ce que j'ai commencé avec:

<% if @list.show_today %> 
    $("#show_today_check_<%= @list.id %>").removeClass("gray").addClass("orange").attr("value","0"); 
<% else %> 
    $("#show_today_check_<%= @list.id %>").removeClass("orange").addClass("gray").attr("value","1"); 
<% end %> 

<% if @list.show_inventory %> 
    $("#show_inventory_check_<%= @list.id %>").removeClass("gray").addClass("white").attr("value","0"); 
<% else %> 
    $("#show_inventory_check_<%= @list.id %>").removeClass("white").addClass("gray").attr("value","1"); 
<% end %> 

etc. 

est ici l'aide que j'ai écrit pour générer le javascript ci-dessus:

def toggelButtonState(object, name, color) 

    if object.send(name) 
     @add_col = color 
     @rem_col = 'gray' 
     @value = "0" 
    else 
     @add_col = 'gray' 
     @rem_col = color 
     @value = "1" 
    end 

    js = '$("#' 
    js += "#{name}_check_#{@list.id}" 
    js += '").removeClass("' 
    js += @rem_col 
    js += '").addClass("' 
    js += @add_col 
    js += '").attr("value","' 
    js += @value 
    js += '");' 

end 

Je l'appelle avec:

<%= toggelButtonState(@list , 'show_today', 'orange') %> 

Et voici ce que je g et dans la réponse:

$(\&quot;#show_today_check_2\&quot;).removeClass(\&quot;orange\&quot;).addClass(\&quot;gray\&quot;).attr(\&quot;value\&quot;,\&quot;1\&quot;); 

Maintenant, j'ai remarqué un problème similaire avec html droit dans les aides. Il ne me laisserait pas retourner les choses entre crochets. Mais ensuite j'ai découvert content_tag. Y a-t-il quelque chose de similaire pour javascript? Comment puis-je me débarrasser de la \&quot; s?

Répondre

2

Ajouter

js.html_safe

en dernière ligne de la fonction toggelButtonState

+0

merci! Je vais creuser ce code et l'essayer. –