Я не работал с гемом ckedit (или Rails в этом отношении), но вот некоторые параметры конфигурации и методы, которые вы можете попробовать.
Вы можете назначить класс (или ID)когда вы создаете экземпляр с использованием параметра конфигурации:
<%= f.cktext_area :content, :bodyClass => 'yourBodyClass', :bodyId => 'yourBodyId'>
Вот страница API:http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html#.bodyClass
Вы можете использовать метод addCss при создании экземпляра.Это пример, который работает при создании экземпляра редактора с помощью JavaScript.
Это можно поместить в файл конфигурации CKEditor, что может быть лучше в вашем случае, поскольку вы создаете объект CKEditor с использованием кода на стороне сервера.Подробнее см. Ниже.
CKEDITOR.replace( 'content' );
CKEDITOR.instances.content.addCss( 'body { background-color: red; }' );
Вот страница API:http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.editor.html#addCss
Вы можете изменить цвет в зависимости от обстоятельств.Если это так, вы можете поместить переменную JavaScript или Rails вместо цвета, чтобы сделать его динамичным.
var colorValue = '<%= colorVariable >';
CKEDITOR.instances.content.addCss( 'body { background-color: '+colorValue+'; }' );
CKEDITOR.instances.content.addCss( 'body { background-color: '<%= colorVariable >'; }' );
Не уверен насчет синтаксиса Rails, но вы поняли.
Помещение метода "addCss" в файл конфигурации CKEditor :Вам нужно поместить его в верхнюю часть файла, прежде чем вызывать «CKEDITOR.editorConfig».Он использует тот же синтаксис, что и выше, и может использовать переменную для установки динамического цвета, как описано выше.
Метод "addCss" не действует, если вызывается после загрузки экземпляра редактора.
Если ваша проверка выполняется с помощью JavaScript, и вам необходимо установить цвет фона после загрузки всего (без перезагрузки страницы), вы можете попробовать следующий подход.
Вы можете вставить следующий код встраница, которая содержит экземпляр редактора.Вы бы вызвали «setIframeBackground ()», когда проверка не удалась.Если цвет не изменяется, вы можете жестко закодировать его и удалить параметр из функции.
Код предполагает, что вы использовали опцию конфигурации «bodyId», описанную выше, чтобы установить Id для iframe области содержимоготело к "yourBodyId".
Одна оговорка, я использовал jQuery для написания этого кода.
// Wait for the document ready event
$(document).ready(function(){
// Wait for the instanceReady event to fire for the "content" instance
// The instance name is "content"
CKEDITOR.instances.content.on( 'instanceReady',
function( instanceReadyEventObj )
{
var currentEditorInstance = instanceReadyEventObj.editor;
var iframeDoc=null;
// Create the function
function setIframeBackground( colorVariable )
{
// The CKEditor content iframe doesn't have a Name, Id or Class
// So, we'll assign an ID to the iframe
// it's inside a table data cell that does have an Id.
// The Id of the data cell is "cke_contents_content"
// Note that the instance name is the last part of the Id
// I'll follow this convention and use an Id of "cke_contents_iframe_content"
$("#cke_contents_content iframe").attr("id", "cke_contents_iframe_content");
// Now use the iframe Id to get the iframe document object
// We'll need this to set the context and access items inside the iframe
$('#cke_iframe_content').each(
function(){ iframeDoc=this.contentWindow.document;}
);
// Finally we can access the iframe body and set the background color.
// The Id of the body is set to "yourBodyId".
// We use the iframe document object (iframeDoc) to set the context.
// We use the "colorVariable" variable assigned in the function call.
$('#' + yourBodyId, iframeDoc).css("background-color", colorVariable);
}
}
);
});
Будь здоров,Джо