2010-05-26 5 views
1

Ce qui suit est dans le champ text_field.page.insert_html ne rend pas partiellement correctement

= f.text_field :title, :size => 50, :onchange => remote_function(:update => :suggestions, :url => {:action => :display_question_search_results}) 

Ce qui suit est dans display_questions_search_results.rjs.

page.insert_html :bottom, 'suggestions', :partial => 'suggestions' 

Chaque fois que les types d'utilisateurs, j'aimerais rechercher la base de données pour toutes les tuples qui correspondent aux mots-clés dans le champ de texte. Ensuite, affichez ces résultats. Mais, pour l'instant, _suggestions.haml ne contient que le mot "suggestions !!".

Mais, au lieu de voir "suggestions !!" dans la balise div suggestions, je reçois:

try { Element.insert("suggestions", { bottom: "suggestions!!" }); } catch (e) { alert('RJS error:\n\n' + e.toString()); alert('Element.insert(\"suggestions\", { bottom: \"suggestions!!\" });'); throw e } 

J'ai essayé de savoir pourquoi cela est fait, mais les questions déjà posées, je trouvais semble plus compliqué que ce que je fais ...

Répondre

2

Si vous spécifiez l'élément à mettre à jour, il est supposé que votre action retournera html (pas rjs/javascript), qui remplacera le contenu de l'élément spécifié.

Donc, si vous avez besoin de remplacer le contenu de :suggestions, juste rendre partiel dans votre contrôleur:

render :partial => 'suggestions' 

Mais si vous avez besoin d'ajouter le contenu à cet élément, de ne pas remplacer, d'enlever :update => :suggestions de votre code de la vue :

= f.text_field :title, :size => 50, :onchange => remote_function(:url => {:action => :display_question_search_results}) 

Et laisser le code du contrôleur comme il est:

page.insert_html :bottom, 'suggestions', :partial => 'suggestions'