- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在我的 ruby-on-rails 应用中使用 cocoon-gem 和 summernote-gem。
这是我的模型:
class Dog < ApplicationRecord
has_many :pictures, as: :imageable, dependent: :destroy
accepts_nested_attributes_for :pictures, reject_if: :all_blank, allow_destroy: true
end
初看新页面或编辑页面似乎还不错。第一个 summary 字段使用 summernote 正确呈现。如果我已经将几张照片保存到我的狗 模型中,它们在编辑页面上看起来都非常好。但是,当我点击“添加图片”时,它会创建新的图片字段,其中 summary 字段无法使用 summernote 正确呈现。在 html 页面中它看起来像这样:
<div class="field">
<label class="string optional" for="dog_pictures_attributes_1544609860934_summary">Summary</label>
<textarea data-provider="summernote" name="dog[pictures_attributes][1544609860934][summary]" id="dog_pictures_attributes_1544609860934_summary"></textarea>
</div>
代替这个:
<div class="field">
<label class="string optional" for="dog_pictures_attributes_1_summary">Summary</label>
<textarea data-provider="summernote" name="dog[pictures_attributes][1][summary]" id="dog_pictures_attributes_1_summary" style="display: none;"></textarea>
<div class="note-editor note-frame">...</div>
</div>
这是我的_form.erb:(如果相关)
<%= simple_form_for @dog, defaults: { required: false } do |f| %>
<div class="field">
<%= f.label 'Note' %>
<%= f.text_area :note, 'data-provider': :summernote %>
</div>
<h2> Add pictures </h2>
<%= f.fields_for :pictures do |picture| %>
<%= render 'picture_fields', :f => picture %>
<% end %>
<div class='links'>
<%= link_to_add_association 'add picture', f, :pictures %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
这是我的_picture_fields.erb:
<div class='nested-fields'>
<div class="field">
<%= f.file_field :image %>
</div>
<div class="field">
<%= f.label :author %>
<%= f.text_field :author %>
</div>
<div class="field">
<%= f.label :summary %>
<%= f.text_area :summary, 'data-provider': :summernote %>
</div>
<%= link_to_remove_association "remove picture", f %>
</div>
我还尝试使用 drifting ruby 从头开始构建嵌套表单.但它会导致同样的问题
最佳答案
当动态地将项目插入页面时,您还必须在这些项目上初始化 summernote 编辑器。 Cocoon 具有允许您执行此操作的回调。
当加载页面时,初始化summernote,你会做类似的事情
$('[data-provider="summernote"]').each ->
$(this).summernote
(从 summernote-rails gem 文档中复制)
但这只适用于页面上已经存在的“summernote”,它不能初始化还不存在的笔记。
因此,在插入嵌套项目后,我们必须使用相同的代码来初始化插入的注释。这样的事情应该有效:
$('form').on('cocoon:after-insert', function(e, insertedItem) {
insertedItem.find('[data-provider="summernote"]').each(function() {
$(this).summernote();
})
});
这将在新嵌套项目中寻找 summernote 项目并初始化它们。
[编辑:改进 javascript 以从 View 中提取它]
Javascript 文件通常分组在 app/assets/javascripts
中,如果您正在编辑 Dog
让我们添加一个新文件 dogs.js
并输入以下代码:
$(document).on('cocoon:after-insert', 'form', function(e, insertedItem) {
insertedItem.find('[data-provider="summernote"]').each(function() {
$(this).summernote();
})
});
然后使用 require dogs
将此文件添加到您的 application.js
。
此代码在文档上注册了一个事件处理程序,它将监听在 form
上触发的任何 cocoon:after-insert
事件。如果您有多个使用 cocoon 的表单,您可能需要一个更好/更精确的 css 选择器(例如,向表单添加一个类并同时添加它)。
关于javascript - Summernote 编辑器不支持嵌套表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53741512/
fontfamily 选项在 summernote 中不起作用 我试过 $("#divCalltoactiontitle").summernote({ toolbar: [
我正在尝试在 Summer-note v0.8.1 中创建一个自定义按钮(带有下拉列表)。 我以前使用过一个运行良好的旧版本,但是在新版本中我不知道如何创建下拉列表按钮。 请帮助我向自定义按钮添加属性
我正在尝试在 vueJS 中使用 summernote。在 Laravel 框架下。在 blade.php 文档中,我设置了一个 id summernot_div: 然后,在相应的 vueJS 文档
我正在尝试使用 summernote我的应用程序中的编辑器。我在我想修复编辑器的地方使用了 height/minheight, maxheigh 并且不允许它调整大小。 这是我正在处理的代码: $('
我有这个旧代码 // myenter.js, enter key is binded to insertParagraph command. $.summernote.addPlugin({
我正在尝试限制夏日笔记中允许的字数。 例如,我只想限制最多 50 个字。 你有什么想法吗? $(document).ready(function() { $('#summernote').su
我正在将用户输入加载回 summernote 进行编辑,顶部和底部都添加了额外的行。有办法解决吗? $('#summernote').summernote('editor.pasteHTML', "h
我在 angular 中使用 summernote 我想创建一个自定义按钮。 我想将 customButton 中的 listHit 作为参数传递,如下所示 'testBtn': this.custo
我在 summernote 中有一个自定义按钮,当我点击例如文本“一”时,它有一个项目“一”、“二”、“三”的下拉列表,文本被添加在开头,这很好。但是当我之后点击“两个”时,文本也会添加到产生这个结果
我在 laravel 上使用 summernote 包,但问题是 Orderlist 和 unorder list 在那里不起作用。这是我正在尝试使用的代码。请帮我解决这个问题。 Html : Ve
我在 Laravel 应用程序中使用 summernote。 @csrf
我正在使用非常好的 Summernote Editor 来开发一个小网络应用程序。我没有对图像使用默认的内联 base64 代码,而是将图像存储在一个文件夹中。 我让那部分按预期工作。我可以单击“图像
我这里有一个 jsFiddle -> http://jsfiddle.net/cm910t89/2/ 我在Summernote WYSIWYG Editor中创建了一个自定义按钮我似乎无法让我的功能在
有人可以帮我设置 Summernote 的默认 textarea 名称值吗?编辑器在页面上看起来是正确的(我可以使用界面修改文本),但根据我的理解,POST 不起作用。 我尝试了各种 POST 变量,
我在将文本返回到 Summernote 编辑器时遇到问题。 我已经尝试过(但没有成功): $("#EDITsummernote").innerHtml = 'test'; 如何做到这一点? 最佳答案
我正在尝试编写一个脚本,当我单击按钮时,该脚本会自动显示 Summernote 链接对话框。 例如,我有以下按钮: Copy 所以在我的 js 中我有: $("#linklist").on("clic
有没有办法在summernote编辑器中同时启用默认工具栏和空气模式工具栏? 例如,我需要用户首先使用默认工具栏编辑文本区域,当他只想编辑一个单词时,他可以选择它,然后弹出空中模式工具栏。 (就像 M
我正在使用django-summernote作为所见即所得的编辑器。到目前为止,我可以从 Summernote 编辑器保存帖子,也可以使用 safe 过滤器显示它。但它的一些功能在我的模板中不存在。
我最近实现了django-summernote使用我的表单,这对于文本非常有效。然而,我很难确切地了解图像上传的工作原理。有人对它是如何完成的有一些意见吗? 问题 使用 Summernote 从文件中
我想向 Summernote WYSIWYG 编辑器添加自定义按钮。 此按钮将弹出一个小窗口,其中包含特殊字符,例如:alpha - beta - 度数等。 我到处找过,但没有找到任何有关此的信息。如
我是一名优秀的程序员,十分优秀!