Rails - Cocoon - 简单形式 - 不呈现

Rails - Cocoon - Simple Form - does not render

我正在为新订单使用 Cocoon 和 SimpleForm,这将有多个 OrderItems。

我已经像这样安装了 gem:

gem "cocoon"

并添加到 application.js :

//= require cocoon

模型配置如下:

class Order < ActiveRecord::Base

#Associations
has_many :order_items
accepts_nested_attributes_for :order_items, reject_if: :all_blank, allow_destroy: true
end


class OrderItem < ActiveRecord::Base

#Associations
belongs_to :order
belongs_to :item
end

_form.html.slim 对于订单是:

= simple_form_for(@order) do |f|
   = f.error_notification
   .row
    .col-md-6
        .form-inputs
            = f.association :branch
            = f.association :client

    .col-md-6
        = f.simple_fields_for :order_items do |order_item|
            = render 'order_item_fields', f: order_item
            .links
                = link_to_add_association 'add order_item', f, :order_items

.form-actions
= f.button :submit

部分 _order_items_fields.html.slim 是:

.nested_fields
  = f.input :item_id
  = f.input :dicount_percentage
  = f.input :fulfilment_type
  = f.input :promised_delivery_date
  = f.input :actual_delivery_date
  = f.input :notes
  = link_to_remove_association "remove order item", f

当我运行orders/new时,除了cocoon应该显示的字段外,所有字段都显示了。

我已经按照 github 页面上的说明完成了所有操作。

可能是什么问题?

我也检查过,正在加载cocoon JS文件。

您的表单为空,因为您的字段应嵌套在 simple_form

= simple_form_for(@order) do |f|
  = f.error_notification
  .row
    .col-md-6
      .form-inputs
        = f.association :branch
        = f.association :client

我不太了解 HAML,但我相信您需要将 .links= f.simple_fields_for :order_items do |order_item| 对齐,因为 HAML 依赖于空格。

使用 this simple form example 从 Cocoon github

链接