Aggiungete nella vostra pagina il div che volete mostrare
<div id="thickbox_win" style="display:none">Some Text</div>
ora posizionate da qualche parte il link per mostrare la finestra modale
<%= link_to "SHOW", '#', :onclick => "thickbox_win_show()" %>
e aggiungete in application.js il corpo della funzione
function thickbox_win_show(){ tb_show('Show Thickbox window', '#TB_inline?height=300&width=500&inlineId=thickbox_win','','') }
questo non fa altro che richiamare la funzione tb_show inclusa nel file thicbox.js, la quale mostra il div thickbox_win.
Ora all'interno del div thickbox_win ho aggiunto un form che chiama la create del controller containers, ad esempio:
<div id="thickbox_win" style="display:none"> <% remote_form_for(:container, :url => {:controller => :containers, :action => :create }, :html => { :method => :post } ) do |f| %> <%= f.text_area :description, :class => "mceEditor" %> <%= f.submit "New" %> </div>
Perfetto, nella finestra modale vedo la mia textarea in stile WYSIWYG grazie all'aiuto di TinyMCE, ma quando eseguo il submit del form, nell'hash passato al controller il campo :description è vuoto.
Per aggirare il problema ho dovuto forzare la copia del testo modificato con TinyMCE usando questo metodo
tinyMCE.triggerSave(true,true)
Il form modificato è il seguente
<% remote_form_for(:container, :url => {:controller => :containers, :action => :create }, :before => "tinyMCE.triggerSave(true,true)", :html => { :method => :post } ) do |f| %>
Ora funzionerà tutto alla grande :)