【发布时间】:2019-05-13 11:15:19
【问题描述】:
我正在尝试在我的 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 正确渲染。如果我已经有几张图片保存到我的 dog 模型中,它们在编辑页面上看起来都很好。 但是,当我单击“添加图片”时,它会创建新的图片字段,其中 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 从头开始构建嵌套表单。但它会导致同样的问题
【问题讨论】:
标签: javascript ruby-on-rails nested-forms summernote cocoon-gem