2012-03-14 93 views
5

類似整合的CKEditor到Integrating CKEditor with Rails 3.1 Asset Pipline使用Rails 3.2

我想ckeditorrails 3.2應用程序集成。

我已將所有ckeditor文件複製到/app/assets/javascripts/ckeditor/*下。

我有以下行我application.jsapplication.js包括在我的佈局文件:

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

採取它的答案Integrating CKEditor with Rails 3.1 Asset Pipline

我可以理解,我需要補充的東西如:

config.assets.precompile += your_files 

我的development.rb文件當應用程序加載時,所有的ckeditor文件都會被預編譯。

雖然我嘗試了幾個路徑,不工作,我不斷收到以下錯誤:

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

有人能告訴我正確的正規表示法,以包括預編譯的所有文件,請?

回答

16

我遇到同樣的問題,發現solution.Go以下鏈接: 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" %> 

你不需要設置任何config.assets.precompile。

+0

澄清後人:它通過CKEditor的情況下替換文字區域的CKEditor要科幻nd本身,但因爲所有的javascript都被編譯成一個文件(application.js),所以它不能再找到它,所以它搜索一個名爲ckeditor_basepath的變量。 – 2012-09-12 18:51:07

+1

在4.x中,應該是CKEDITOR.basePath – bobzsj87 2014-01-01 14:55:16

0

關於這個問題最近有很多帖子,但是他們都沒有(包括像上面提到的那樣定義BASEPATH)爲我工作,所以我認爲這可能對某些人有幫助。

我通過與路徑

〜/ .rvm /寶石/紅寶石1.9.3x /寶石/ CKEditor的-3.7.0.rc3 ( 'X' 號是從目錄中複製文件解決了這個問題應用程序特定的,你的會不同)

到目錄/ assets/javascript。

然後,我可以在config.js文件中編輯工具欄的配置,使編輯器具有我想要的選項。這對我來說是完美的,因爲我總是希望在這個應用程序中有相同的選項。

UPDATE

我現在有它的資產管道,它屬於config.js文件的工作,但居住在我的.rvm寶石的CKEditor的代碼的復位。我認爲這是一個衝突,因爲我試圖重新定義他們的工具欄,名爲「Easy」。當我做了一個新的工具欄&設置一個是活動的,管道似乎工作正常。

2

我用這個指南添加的CKEditor中啓用了與資產管道的Rails 3.2 activeadmin: https://github.com/gregbell/active_admin/wiki/CKEditor-integration

它的工作就像一個魅力。

我做的唯一額外的事情是這行添加到我的環境:

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

當我按照這個按鈕樣式搞砸了,就像建議在指南中發生的那樣 - 但這兩個「修復」都不適用於我 - 總是有越來越多的做... – 2013-03-28 15:57:52

1

我有一個類似的,而試圖在Rails 3.1應用程序,而資產管道多個樣式表和JavaScript的結合爲一體,使用stylesheet_link_tag和javascript_include_tag與緩存選項。在這種情況下,文件並不總是以正確的順序加載,其他ckeditor文件(如配置文件「config.js」)和語言文件(如「lang/en.js」)的路徑沒有明確定義。這意味着您將在檢索它們時收到其他附加的「NetworkError:404 Not Found」錯誤,並且配置和語言文件不可用,這會導致更嚴重的錯誤,如上面提到的Uncaught TypeError: Cannot read property 'options' of undefined

使用Javascript超時並沒有幫助,並且設置CKEDITOR_BASEPATH也沒有幫助,至少如果您在編輯器加載之前在application.js中定義它,就像我那樣(可能順序在這裏嗎?) 。爲了使其工作,可以提取從普通高速緩存文件的CKEditor的的JavaScript(或把它拿出來的資產管道)和文件的其餘部分與

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

後seperately加載它,我這個問題打幾個小時,但問題不是CKEditor,而是我的代碼。我將ckeditor.js腳本包含在我的部分視圖中,該視圖是通過AJAX呈現的,是的,您猜對了,沒有工作。一旦我移動了包括主佈局(_Layout)在內的腳本,問題就解決了。當然,這發生在我工作於ASP.NET MVC。對於其他Web框架,我沒有解決方案。

1

ckeditor with rails 3.2的問題是javascript庫路徑無法加載生產環境,因此我們需要正確修改路徑。 我下面的步驟:

在application.html.erb

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

在production.rb文件

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

運行資產

rake assets:precompile:all 

這些步驟,工作對我來說導軌版本3.2.8

1

這只是一個補充。我想這一切,並沒有爲我工作,所以我所做的就是我的CKEditor寶石變爲gem 'ckeditor'

,並將此向我​​的application.js

//= require ckeditor/init 

然後預編譯我的資產,我加入這對我的生產。RB文件

config.assets.precompile += Ckeditor.assets 

而這一切,像變魔術一樣

4

軌3.2 FIX:

    資產/ JavaScript的
  1. /application.js中
    ... blablabla ... 
    //= require ckeditor_fix  #- add this line 
    //= require ckeditor/init 
    //= require_tree .
  2. 資產
  3. /JavaScript的創建新的文件ckeditor_fix .js
    var CKEDITOR_BASEPATH = '/assets/ckeditor/';
+0

這並不適用於我,但將ckeditor gem從3.7.1升級到3.7.3已經工作 – 2013-06-13 20:59:30

0

有類似的問題。對我來說,它是通過覆蓋默認預編譯任務(我使用Rails 4和CkEditor 4)來修復的。

  1. 添加到application.rb中config.assets.precompile += ['ckeditor/*']
  2. 在application.js中//= require ckeditor/init
  3. 從這個答案創建文件lib/tasks/precompile_hook和粘貼文本Precompile hook
1

步驟1:添加gem 'paperclip'gem "ckeditor"在的Gemfile。

步驟2:捆綁安裝。

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

步驟4:地點config.autoload_paths += %W(#{config.root}/app/models/ckeditor) in application.rb

步驟5:地點mount Ckeditor::Engine => "/ckeditor"如果不存在已經和運行db:migrate

步驟6:打開application.html.erb並把這個<%= javascript_include_tag 'ckeditor/ckeditor.js' %>放在他裏面阿德。

步驟7:在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> 

步驟8將這個在頁腳(body標籤以上):重新啓動WEBrick服務器。 就是這樣。

2

最後一個簡單的工作解決方案。

下載CKEditor Zip file,提取文件並將其放置在子目錄「的JavaScript/CKEditor的」,主要JS文件添加到佈局..

javascript_include_tag 'ckeditor/ckeditor.js' 

..和寫的有點JavaScript代碼

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

信用Source

+0

老實說,所有的gem解決方案都不是最好的。這是最簡單的解決方案,因爲它避免了預編譯巨大的CKEditor庫。 (如果你想縮小它,你應該只做一次,因爲它永遠不會改變。)另外,更簡單的,你可以使用CKEditor的CDN:https://cdn.ckeditor.com/。 – thekingoftruth 2015-01-28 02:32:03