2010-04-22 3 views
2

J'ai le code suivant.Rails partiel obtient double échappé lors de l'utilisation link_to_function

def add_resume_link(name, form) 
    link_to_function name do |page| 
     html = form.fields_for :resumes, @general_resume.resumes.build, :child_index => 'NEW_RECORD' do |form_parent| 
       render :partial => 'resume_form', :locals=>{:form=>form_parent} 
      end 
     page << "$('resumes').insert({ bottom: '#{escape_javascript(html)}'.replace(/NEW_RECORD/g, id) });" 
     end 
    end 

Et le resume_form j'ai quelque part:

=add_skill_link("Add Skill", form, "resume_#{id}_skills") 

et la fonction ressemble à:

def add_skill_link(name, form, id) 
    link_to_function name do |page| 
     html = form.fields_for :skill_items, @general_resume.skill_items.build, :child_index => 'NEW_RECORD' do |form_parent| 
     render :partial=>'skill_form', :locals=>{:form=>form_parent, :parent=>id} 
     end 
     page << "$('#{id}').insert({ bottom: '#{escape_javascript(html)}'.replace(/NEW_RECORD/g, new Date().getTime()) });" 
    end 
    end 

Donc, fondamentalement, j'ai un code javascript qui ajoute dynamiquement un morceau de HTML (add_resume) et contient un autre code javascript qui ajoute dynamiquement une zone de sélection à la page.

Mon problème est que le add_skill_link fonctionne très bien si j'utilise du côté du serveur, je veux dire le rendu du côté serveur. Et obtient double échappé lors de l'utilisation dans la manière décrite ci-dessus.

J'ai essayé d'enlever le escape_javascript du bit add_skill_link toujours pas bon.

Des idées?

Répondre

0

Je remarquai que les choses deviennent trop en désordre, finalement je suis ma solution d'exemple d'application Ryan Bates, il a un Railscast à propos des modèles imbriqués, et là j'ai parcouru les branches et j'ai obtenu une branche avec une belle solution propre à ce problème.

1

Est-ce HAML?

=add_skill_link("Add Skill", form, "resume_#{id}_skills") 

Si oui, vous devez empêcher HAML de s'échapper votre sortie:

!=add_skill_link("Add Skill", form, "resume_#{id}_skills") 
+0

Merci pour votre réponse, enfin j'ai changé le tout, probablement vous avez raison, mais je ne sais pas si cela résout mon problème. – dombesz

Questions connexes