2010-01-11 3 views
2

Voici le code sur la vue en FeesController "show" modèle d'action:RJS retourne javascript plaine sans balises JS

<div id="payers_controls"> 
     <%= link_to_remote('New payer', 
           :update => "payers_controls", 
           :url => new_payer_url) 
     %> 
</div> 

Voici new.rjs - appartient à PayersController "nouveau" l'action

page.replace_html "payers_controls", :partial => "form", :object => @payer 

Voici une action "nouvelle" action PayersController

def new 
    @payer = Payer.new(params[:payer]) 
    end 

Voici "forme" partielle pour "nouveau" dans PayersController

<%= "Damn text to see if this damn partial is rendered properly" %> 

Et puis je clique sur le lien « Nouveau payeur », il me rend JS plaine à l'intérieur « payers_controls » DIV:

try { Element.update("payers_controls", "Damn text to see if this damn partial is rendered properly"); } catch (e) { alert('RJS error:\n\n' + e.toString()); alert('Element.update(\"payers_controls\", \"Damn text to see if this damn partial is rendered properly\");'); throw e } 

Et pourquoi diable cette réponse putain n'est pas enfermé dans les balises SCRIPT? Ai-je besoin de créer un autre espace réservé caché avec des balises SCRIPT dans la page pour les réponses JS?

P.S. S'il vous plaît comprendre ma fureur, parce que je suis nouveau à AJAX sur Rails, je veux être programmeur pédant et, je veux que mon code soit beau et propre.

Répondre

3

Le problème est que vous essayez de mettre à jour le contenu deux fois en utilisant JS. Je voudrais supprimer le paramètre: update de votre balise link_to_remote, ou supprimer le modèle RJS.

Fondamentalement, Rails met à jour la page une fois en utilisant le modèle RJS, puis il le met à jour à nouveau en utilisant le rappel: update de link_to_remote. Vous n'avez pas besoin des deux. Comme il vaut mieux garder le moins de code possible dans vos vues, je voudrais l'enlever là et garder le modèle RJS.

Espérons que cela aide. Rien d'autre, faites le moi savoir.

Kent

+0

C'était astucieux. Merci beaucoup. Il me semble que j'ai besoin de dormir. P.S. Stackoverflow est un peu addictif pour des réponses aussi rapides: D – BlackTea

+0

Haha. Aucun problème! Je sais que c'est ce qui est frustrant à propos de JS et Rails ... le diable est dans les détails. Bonne chance avec votre projet Rails. – ewakened