Rails 嵌套 activeadmin 形式的 Froala 编辑器

Rails Froala Editor in nested activeadmin form

我对 activeadmin_froala_editor gem 有一些疑问。

在我的表单中,我可以使用 froala 编辑器,它工作正常,但在嵌套表单中,它不工作,但我不明白为什么。

这是我的代码的一部分:

   form do |f|
        f.inputs "En-tête" do
          f.input :title
          f.input :content, as: :froala_editor
          f.input :banner
        end

        f.inputs "Prix" do
          f.has_many :rewards do |price|
            price.input :name
            price.input :picto
            price.input :description, as: :froala_editor
            price.input :quantity
        end
     end
   end

第一个 froala 工作正常,但第二个没有出现。

感谢您的帮助!

额外的奖励子表单是动态添加到页面的。要在一个页面上有多个 froala_editor 实例,元素将需要具有唯一的挂钩(请参阅 https://www.froala.com/wysiwyg-editor/examples/inline-two-instances),并且您必须通过 javascript 自行附加编辑器。这很棘手但可能。但是,您可以牺牲 UX 执行以下操作:

从表单中删除描述字段,并像这样设置一个显示块:

show do |en_tete|
  attributes_table do
    row :title
    row :content
    row :banner
    row :rewards do        
      en_tete.rewards.each do |reward|
        h4 { reward.name }
        span { reward.picto }
        span { reward.quantity }
        div { reward.description.html_safe }
        br
        # use rake routes to find the correct path helper
        a(href: edit_admin_reward_path(reward) { "edit" } 
      end
    end
  end
end

您必须在 ActiveAdmin 中注册 Reward 模型,您可以这样做:

ActiveAdmin.register Reward do
  belongs_to :en_tete, :parent_class => "EnTete", :optional => true

  form do |f|
    f.inputs do
      f.input :name
      f.input :picto
      f.input :description, as: :froala_editor
      f.input :quantity
    end
    f.actions do
      f.action :submit          
      f.cancel_link(admin_en_tete_path(f.object.en_tete))
    end
  end

  # if you wish you could add this
  controller do
    def show
      redirect_to admin_en_tete_path(resource)
    end
  end

end

gem"activeadmin_froala_editor"需要更新

$>bundle update activeadmin_froala_editor

还要确保版本已在 gemfile.lock 中更新。 如果您处于早期开发阶段,您可以将其删除。

$> rm Gemfile.lock
$> bundle update