2013-07-27 4 views
2

Я использую CKeditor в моем приложении rails. Я последовал за этим: https://github.com/galetahub/ckeditor для реализации ckeditor.Rails: ReferenceError: CKEDITOR не определен

Так что мой Gemfile содержит:

gem "ckeditor" 

В моих маршрутов, у меня есть:

mount Ckeditor::Engine => '/ckeditor' 

И я также создал файлы модели CKEditor.

Это мой вид файл:

<%= m.cktext_area :message, :class => "message-body", :placeholder => "Your content", :ckeditor => {:toolbar => "MyToolbar"} %> 

И мой config.js в активах/JavaScripts/CKEditor является:

 CKEDITOR.editorConfig = function(config) 
     { 
      // Define changes to default configuration here. For example: 
      // config.language = 'fr'; 
      // config.uiColor = '#AADC6E'; 

      /* Filebrowser routes */ 
      // The location of an external file browser, that should be launched when "Browse Server" button is pressed. 
      config.filebrowserBrowseUrl = "/ckeditor/attachment_files"; 

      // The location of an external file browser, that should be launched when "Browse Server" button is pressed in the Flash dialog. 
      config.filebrowserFlashBrowseUrl = "/ckeditor/attachment_files"; 

      // The location of a script that handles file uploads in the Flash dialog. 
      config.filebrowserFlashUploadUrl = "/ckeditor/attachment_files"; 

      // The location of an external file browser, that should be launched when "Browse Server" button is pressed in the Link tab of Image dialog. 
      config.filebrowserImageBrowseLinkUrl = "/ckeditor/pictures"; 

      // The location of an external file browser, that should be launched when "Browse Server" button is pressed in the Image dialog. 
      config.filebrowserImageBrowseUrl = "/ckeditor/pictures"; 

      // The location of a script that handles file uploads in the Image dialog. 
      config.filebrowserImageUploadUrl = "/ckeditor/pictures"; 

      // The location of a script that handles file uploads. 
      config.filebrowserUploadUrl = "/ckeditor/attachment_files"; 


      config.toolbar_MyToolbar = 
      [ 
       { name: 'basicstyles', items : [ 'Bold','Italic' ] }, 
       { name: 'links', items : [ 'Link','Unlink' ] }, 
       { name: 'insert', items : [ 'Image' ] }, 
       { name: 'paragraph', items : [ 'BulletedList' ] }, 

      ]; 
     config.height = '143px'; 
     config.width = '100%'; 
      // Rails CSRF token 
      config.filebrowserParams = function(){ 
      var csrf_token, csrf_param, meta, 
       metas = document.getElementsByTagName('meta'), 
       params = new Object(); 

      for (var i = 0 ; i < metas.length ; i++){ 
       meta = metas[i]; 

       switch(meta.name) { 
       case "csrf-token": 
        csrf_token = meta.content; 
        break; 
       case "csrf-param": 
        csrf_param = meta.content; 
        break; 
       default: 
        continue; 
       } 
      } 

      if (csrf_param !== undefined && csrf_token !== undefined) { 
       params[csrf_param] = csrf_token; 
      } 

      return params; 
      }; 

      config.addQueryString = function(url, params){ 
      var queryString = []; 

      if (!params) { 
       return url; 
      } else { 
       for (var i in params) 
       queryString.push(i + "=" + encodeURIComponent(params[ i ])); 
      } 

      return url + ((url.indexOf("?") != -1) ? "&" : "?") + queryString.join("&"); 
      }; 

      // Integrate Rails CSRF token into file upload dialogs (link, image, attachment and flash) 
      CKEDITOR.on('dialogDefinition', function(ev){ 
      // Take the dialog name and its definition from the event data. 
      var dialogName = ev.data.name; 
      var dialogDefinition = ev.data.definition; 
      var content, upload; 

      if (CKEDITOR.tools.indexOf(['link', 'image', 'attachment', 'flash'], dialogName) > -1) { 
       content = (dialogDefinition.getContents('Upload') || dialogDefinition.getContents('upload')); 
       upload = (content == null ? null : content.get('upload')); 

       if (upload && upload.filebrowser && upload.filebrowser['params'] === undefined) { 
       upload.filebrowser['params'] = config.filebrowserParams(); 
       upload.action = config.addQueryString(upload.action, upload.filebrowser['params']); 
       } 
      } 
      }); 
     }; 

Но я получаю сообщение об ошибке из:

ReferenceError: CKEDITOR is not defined[Break On This Error]  

    CKEDITOR.editorConfig = function(config) 

Я попробовал решение, доступное в сети, но без помощи.

Может кто-нибудь помочь мне, где я иду не так ???

спасибо.

ответ

5

Я получил это работает над изменением config.js к этому:

if (typeof(CKEDITOR) != 'undefined') { 
      CKEDITOR.editorConfig = function(config) 
      { 
       config.toolbar = 'MyToolbar' 

       config.toolbar_MyToolbar = 
       [ 
        { name: 'basicstyles', items : [ 'Bold','Italic' ] }, 
        { name: 'links', items : [ 'Link','Unlink' ] }, 
        { name: 'insert', items : [ 'Image' ] }, 
        { name: 'paragraph', items : [ 'BulletedList' ] }, 

       ]; 
      config.height = '143px'; 
      config.width = '100%'; 
config.enterMode = CKEDITOR.ENTER_BR; 
    config.shiftEnterMode = CKEDITOR.ENTER_BR; 
    config.autoParagraph = false; 
    } 
} 
Смежные вопросы