CKEditor-集成到best_in_place gem

时间:2018-08-01 00:38:21

标签: ruby-on-rails ckeditor

我在自己的应用程序中实现了https://github.com/tsechingho/ckeditor-rails,并希望进一步在best_in_place文本区域中实现它。

application.js

$('.ckeditor').ckeditor({
    // optional config
});

view.html.erb

<%= best_in_place @post, :body, :as => :textarea, class: 'ckeditor',  inner_class: 'ckeditor form-control', ok_button: 'Update', ok_button_class: 'btn btn-outline-success btn-sm', raw: true%>

这不起作用。

如果我做这样的事情:

<%= form_for @post do |f| %>
<%= f.text_area :body, class: 'ckeditor'%>
<% end %>

它可以工作,但是我希望它在我的best_in_place文本区域内。

我希望在项目中实现内联ckeditor版本。我不想用ckeditor区域替换文本区域,我只想使用现有文本区域的工具栏。

 <div class="col-12 col-md-8">
        <% if current_user == @post.user || current_user.try(:admin?) %>
          <%= best_in_place @post, :body, :as => :textarea, class: 'ckeditor',  inner_class: 'ckeditor form-control', ok_button: 'Update', ok_button_class: 'btn btn-outline-success btn-sm', raw: true%>
        <% else %>
        <p class="postbody"><%= sanitize @post.body %></p>
          <% end %>
        <div class="py-3">

1 个答案:

答案 0 :(得分:0)

这里的事情是textarea是动态生成的,因此您需要在textarea在那里后运行ckeditor的初始化,类似这样

$(document).ready(function(){
  $('.best_in_place').bind('best_in_place:activate', function(){
    alert("hey it's working");
    $('.ckeditor').ckeditor({
      // optional config
    });
  });
});

在激活文本区域时,您可以初始化ckeditor,当然,最好将它绑定到您想要的与ckeditor绑定的那个,这样它就不会在每个输入上都运行编辑器的初始化。