2012-03-14 16 views
5

Simile a Integrating CKEditor with Rails 3.1 Asset PiplineIntegrazione CKEditor con Rails 3.2

sto cercando di integrare ckeditor con la mia domanda rails 3.2.

Ho tutti i file ckeditor copiati sotto /app/assets/javascripts/ckeditor/*.

Ho le seguenti righe nel mio application.js e application.js è incluso nel mio file di layout:

//= require jquery 
//= require jquery_ujs 
//= require ckeditor/ckeditor 
//= require_self 

preso dalla risposta alla Integrating CKEditor with Rails 3.1 Asset Pipline

posso capire che ho bisogno di aggiungere qualcosa Mi piace:

config.assets.precompile += your_files 

al mio file development.rb così che tutti i file ckeditor siano precompilati quando l'applicazione viene caricata.

Anche se ho provato un paio di percorsi, non ha lavorato e continuo a ricevere il seguente errore:

error on page view and the text area is not shown at all

Qualcuno può dirmi il diritto expresion regolare per includere tutti i file per precompilare, per favore?

risposta

16

ho incontrato lo stesso problema e trovato un solution.Go al seguente link: http://docs.cksource.com/CKEditor_3.x/Developers_Guide/Specifying_the_Editor_Path

<script type="text/javascript"> 
var CKEDITOR_BASEPATH = '/assets/ckeditor/'; 
</script> 
<%= javascript_include_tag "application" %> 

non è necessario impostare config.assets.precompile nulla.

+0

per chiarire per i posteri: ckeditor vuole fi nd stesso, ma poiché tutti i javascript sono compilati in un unico file (application.js), non riesce più a trovarsi, quindi cerca una var denominata ckeditor_basepath. –

+1

In 4.x, dovrebbe essere CKEDITOR.basePath – bobzsj87

0

Ci sono molti post recenti su questo argomento, ma nessuno di essi (compresa la definizione del BASEPATH come suggerito sopra) ha funzionato per me, quindi ho pensato che questo potesse essere utile ad alcune persone.

ho risolto il problema copiando i file dalla directory con il percorso

~/.rvm/gemme/ruby-1.9.3x/gemme/ckeditor-3.7.0.rc3 (la 'x' è specifica dell'app, la tua sarebbe diversa)

nella directory/assets/javascript.

Quindi sono stato in grado di modificare la configurazione per la barra degli strumenti nel file config.js per fare in modo che l'editor avesse le opzioni che volevo. Questo funziona perfettamente per me dal momento che voglio sempre le stesse opzioni in questa app.

UPDATE

ora ho che lavora con il file config.js in cantiere del risparmio, a cui appartiene, ma con il reset del codice ckeditor residente nel mio .rvm GemSET. Penso che ci sia stato un conflitto perché stavo cercando di ridefinire la loro barra degli strumenti, chiamata "Easy". Quando ho creato una nuova barra degli strumenti, &, impostandola per essere attiva, la pipeline sembra funzionare correttamente.

2

ho usato questa guida per aggiungere ckeditor a activeadmin in Rails 3.2 con la pipeline di asset abilitati: https://github.com/gregbell/active_admin/wiki/CKEditor-integration

ha funzionato come un fascino.

L'unica cosa aggiuntiva che ho fatto è stato aggiungere questa riga al mio ambiente:

config.assets.precompile += ['active_admin.css', 'active_admin.js', 'ckeditor/init.js'] 
+0

Quando l'ho seguito, gli stili dei pulsanti erano incasinati, come suggerito nella guida, ma nessuna delle "correzioni" ha funzionato anche per me - c'era sempre di più do ... –

1

Ho avuto un simile durante il tentativo di combinare più fogli di stile e JavaScript in uno in un Rails 3.1 applicazione senza pipeline di attività, utilizzando il stylesheet_link_tag e javascript_include_tag con l'opzione cache. In questo caso i file non vengono sempre caricati nell'ordine corretto e i percorsi verso altri file ckeditor come il file di configurazione "config.js" ei file di linguaggio come "lang/it.js" non sono ben definiti. Ciò significa che si otterranno altri errori "NetworkError: 404 Not Found" aggiuntivi durante il recupero e che i file di configurazione e lingua non sono disponibili, il che causa ulteriori errori fatali come quello sopra menzionato, Uncaught TypeError: Cannot read property 'options' of undefined.

Utilizzando un timeout Javascript non ha aiutato, e l'impostazione del CKEDITOR_BASEPATH non ha aiutato, o, per lo meno se si definisce nelle application.js appena prima che l'editor è caricato come ho fatto io (forse le questioni di ordine qui?) . Per farlo funzionare, è possibile estrarre il javascript ckeditor dal file memorizzato nella cache comune (o togliere del gasdotto bene) e caricarlo separatamente dopo il resto dei file con

<%= javascript_include_tag 'ckeditor/ckeditor.js' %> 
0

Ho lottato con questo problema per alcune ore, ma il problema non era con CKEditor, ma con il mio codice. Ho incluso lo script ckeditor.js nella mia vista parziale che è stata resa tramite AJAX e sì, avete indovinato, non funzionava. Una volta spostato lo script incluso all'interno del layout principale (_Layout), il problema è stato risolto. Naturalmente, questo è successo a me mentre lavoravo in ASP.NET MVC. Per altri framework web, non ho soluzione.

1

Il problema di ckeditor con rails 3.2 è il percorso della libreria javascript che non si carica per l'ambiente di produzione, quindi è necessario modificare il percorso correttamente. ho seguenti fasi:

In application.html.erb

<%= javascript_include_tag "application" , '/assets/ckeditor/ckeditor.js', '/assets/ckeditor/init.js'%> 

Nel file di production.rb

config.assets.precompile += %w(ckeditor/init.js) 

beni run

rake assets:precompile:all 

Questa procedura ha funzionato per me con rails versione 3.2.8

1

Questa è solo un'aggiunta. Ho provato tutto questo e non ha funzionato per me, così quello che ho fatto è stato quello di cambiare la mia ckeditor gioiello da gem 'ckeditor'

E aggiunto questo ai miei application.js

//= require ckeditor/init 

Poi di precompilare i miei beni, ho aggiunto questo alla mia produzione.file di rb

config.assets.precompile += Ckeditor.assets 

e tutto ha funzionato come per magia

4

rotaie 3.2 fix:

  1. in attività/javascript/application.js
    ... blablabla ... 
    //= require ckeditor_fix  #- add this line 
    //= require ckeditor/init 
    //= require_tree .
  2. in attività/javascript creare nuovi file di ckeditor_fix .js
    var CKEDITOR_BASEPATH = '/assets/ckeditor/';
+0

Questo non ha funzionato per me, ma l'aggiornamento del gem di ckeditor da 3.7.1 a 3.7.3 ha funzionato –

2

Si noti che molte di queste risposte si riferiscono alla gemma ckeditor (https://github.com/galetahub/ckeditor/), non solo al progetto ckeditor (http://ckeditor.com), in particolare dove si fa riferimento al file ckeditor/init.js.

Ci sono altre pietre preziose per l'integrazione del ckeditor, incluse le ckeditor-rails (https://github.com/tsechingho/ckeditor-rails) che è una soluzione più leggera e più semplice.

Vedi anche Integrating CKEditor with Rails 3.1 Asset Pipline

0

Avere problema simile. Per me è stato corretto eseguendo l'override del task di precompilazione predefinito (ho usato Rails 4 e CkEditor 4).

  1. Aggiungi application.rb config.assets.precompile += ['ckeditor/*']
  2. In application.js //= require ckeditor/init
  3. Creare il file lib/tasks/precompile_hook e incollare testo da questa risposta Precompile hook
1

FASE 1: Aggiungere gem 'paperclip' e gem "ckeditor" nella vostra Gemfile.

FASE 2: Installazione bundle.

FASE 3:rails generate ckeditor:install --orm=active_record --backend=paperclip

FASE 4: Luogo config.autoload_paths += %W(#{config.root}/app/models/ckeditor) in application.rb

FASE 5: Luogo mount Ckeditor::Engine => "/ckeditor" se non è già presente e gestito db:migrate

FASE 6: Aperto application.html.erb e metti questo <%= javascript_include_tag 'ckeditor/ckeditor.js' %> in lui Ader.

STEP 7: collocare questo a piè di pagina (sopra il tag body) in application.html.erb

<script type="text/javascript"> 
    $(document).ready(function() { 
    if ($('textarea').length > 0) { 
     var data = $('textarea'); 
     $.each(data, function(i) { 
      CKEDITOR.replace(data[i].id); 
     }); 
    } 
}); 
</script> 

FASE 8: riavviare il server WEBrick. Ecco fatto.

2

Finalmente una soluzione di lavoro facile.

Scarica il CKEditor Zip file, estrarre i file e metterli nella directory sub “javascript/ckeditor”, aggiungere il file JS principale per il layout ..

javascript_include_tag 'ckeditor/ckeditor.js' 

..e scrivere un po 'di codice JavaScript che sostituisce textareas da istanze CKEditor:

$(document).ready(function() { 
    if ($('textarea').length > 0) {  
    var data = $('textarea'); 
    $.each(data, function(i) { 
     CKEDITOR.replace(data[i].id); 
    });  
    } 
}); 

credito Source

+0

Onestamente, tutte le soluzioni gemma non sono le migliori. Questa è la soluzione più semplice perché evita di precompilare la gigantesca libreria CKEditor. (Se vuoi che venga minimizzato, dovresti farlo una volta sola, dato che non cambia mai.) Inoltre, ancora più semplice, puoi usare CKEditor's CDN: https://cdn.ckeditor.com/. – thekingoftruth