2009-11-18 4 views
1

J'ai un attribut imbriqué (discours) sous un modèle Speaker et j'utilise tinyMce pour permettre à un locuteur de remplir un formulaire de profil où il pourrait avoir un ou plusieurs discours qu'ils donnent. J'utilise les helpers d'attributs imbriqués de Rails 2.3 tels qu'utilisés dans le compte github d'exemple de forme complexe de Ryan Bates. La fonctionnalité tinyMce est idéale pour un "Discours" s'il est chargé par la page, mais pas pour un nouveau "Discours" chargé par AJAX sur "Ajouter un nouveau discours" (appelle un script insert_fields pour ajouter les champs du formulaire)Activer le mode tinyMce pour activer une nouvelle zone de texte insérée par AJAX (dans Rails)

le code tinymce sur la page est

<script src="/javascripts/tiny_mce/tiny_mce_src.js?1254270151" type="text/javascript"></script> 
<script type="text/javascript"> 
//<![CDATA[ 
tinyMCE.init({ 
editor_selector : 'mceEditor', 
language : 'en', 
mode : 'textareas', 
theme : 'simple' 

}); 
//]]> 
</script> 

Et pour activer un champ de formulaire textarea, vous mettez class = "mceEditor" sur elle.

Existe-t-il un moyen d'activer tinyMce sur les nouveaux champs de formulaire Ajax insérés?

plug-in TinyMCE: http://github.com/kete/tiny_mce

Répondre

0

Vous pouvez créer un nouvel éditeur après TinyMCE a été initialisé using:

var new_editor = new tinymce.Editor('new_id', { 
}); 
new_editor.render(); 

Ce ne sera pas utiliser les paramètres que vous avez dans votre contrôleur, et est un pur javascript solution, pas vraiment un ruby, mais vous devriez être capable de l'exécuter facilement après que votre appel ajax se termine et vous avez l'ID de la nouvelle zone de texte.

+0

je l'ai ajouté à fonctionner insert_fields , mais cela n'a pas créé le bon effet. function insert_fields (lien, méthode, contenu) { var new_id = new Date(). GetTime(); var regexp = new RegExp ("nouvelle_" + méthode, "g") $ (link) .up(). Insert ({ avant: content.replace (regexp, new_id) }); \t var new_editor = new tinymce.Editor (nouvel_id, { \t}); \t new_editor.render(); } –

+0

Je ne suis pas ce que fait votre fonction. Si la méthode "new_" + est l'ID de la zone de texte nouvellement ajoutée, envoyez-la simplement au constructeur de l'éditeur. Je ne suis pas sûr que passer le temps dans fonctionnera réellement car il attend une chaîne qui est l'ID de la zone de texte dans le DOM – danivovich

0

Je ne sais pas si c'est une bonne réponse; mais pour cette situation (quelqu'un qui suit la Railscast sur les attributs imbriqués et des formes complexes et vouloir utiliser tinyMCE)

coller

<script type="text/javascript"> 
//<![CDATA[ 
tinyMCE.init({ 
editor_selector : 'mceEditor', 
language : 'en', 
mode : 'textareas', 
theme : 'simple' 

}); 
//]]> 
</script> 

Dans ma fonction de champs d'insertion ont rendu Worl

Questions connexes