活动管理员嵌套资源表单生成
active admin nested resources form generation
我能够为嵌套属性表单生成所需的布局,如下图所示:
嵌套形式的代码:
f.inputs 'Line Item/s' do
f.has_many :payment_line_items, heading: false do |form|
table do
tr do
th 'Description'
th 'Qty'
th 'Unit Price'
th 'Amount'
end
tr do
td {form.input :description, label: false}
td {form.input :quantity, label: false}
td {form.input :unit_price, label: false}
td {form.input :amount, label: false}
end
end
end
end
当我点击 'add new payment line Item button' 时,我得到了如下图片:
我只想在单击 'add new payment line Item' 按钮时复制整个 table 或仅复制带有表单部分的 tr。我怎样才能做到这一点?
我在我的一个 activeadmin 项目中遇到了类似的问题。 fieldset
元素使用可以设置样式的 li
元素。因此,请检查表单正在使用的 class,然后将类似的内容添加到 app/assets/stylesheets/active_admin.scss
的末尾。这里我假设周围表格上的 css class 是 line_items
。诀窍是 li
元素上的 inline-block
属性,不过您可能需要 fiddle 和 css 属性。
form.line_items fieldset.has_many_fields ol > li > label { display: none; }
form.line_items fieldset.has_many_fields:first-child ol > li > label { display: block; }
form.line_items fieldset.has_many_fields ol > li { display: inline-block; padding: 5px; width: 18%; float:left;}
form.line_items fieldset.has_many_fields ol > li.has_many_delete { margin-top:20px; margin-left: -36px;}
form.line_items fieldset.has_many_fields ol > li > label { width: auto; padding-right: 10px;}
form.line_items fieldset.has_many_fields ol > li > div > label.label { width: auto; padding-right: 10px;}
form.line_items fieldset.has_many_fields ol > li > a.has_many_remove { margin-top:20px; }
form.line_items fieldset.has_many_fields ol > li > p.inline-errors { margin: 0.3em 0 0 0; }
这可行,但您必须将表格重写为:
f.inputs 'Line Item/s' do
f.has_many :payment_line_items, heading: false do |form|
form.input :description, label: false
form.input :quantity, label: false
form.input :unit_price, label: false
form.input :amount, label: false
end
end
如果您希望用户能够销毁订单项,您必须像这样设置您的关联和 permit_params:
在你的模型中
accepts_nested_attributes_for :line_items, :allow_destroy => true
并且在activeadmin注册块中:
permit_params \
:line_items_attributes => [:id, :description, :quantity, :unit_price, :amount, :_destroy]
祝你好运!
我能够为嵌套属性表单生成所需的布局,如下图所示:
嵌套形式的代码:
f.inputs 'Line Item/s' do
f.has_many :payment_line_items, heading: false do |form|
table do
tr do
th 'Description'
th 'Qty'
th 'Unit Price'
th 'Amount'
end
tr do
td {form.input :description, label: false}
td {form.input :quantity, label: false}
td {form.input :unit_price, label: false}
td {form.input :amount, label: false}
end
end
end
end
当我点击 'add new payment line Item button' 时,我得到了如下图片:
我只想在单击 'add new payment line Item' 按钮时复制整个 table 或仅复制带有表单部分的 tr。我怎样才能做到这一点?
我在我的一个 activeadmin 项目中遇到了类似的问题。 fieldset
元素使用可以设置样式的 li
元素。因此,请检查表单正在使用的 class,然后将类似的内容添加到 app/assets/stylesheets/active_admin.scss
的末尾。这里我假设周围表格上的 css class 是 line_items
。诀窍是 li
元素上的 inline-block
属性,不过您可能需要 fiddle 和 css 属性。
form.line_items fieldset.has_many_fields ol > li > label { display: none; }
form.line_items fieldset.has_many_fields:first-child ol > li > label { display: block; }
form.line_items fieldset.has_many_fields ol > li { display: inline-block; padding: 5px; width: 18%; float:left;}
form.line_items fieldset.has_many_fields ol > li.has_many_delete { margin-top:20px; margin-left: -36px;}
form.line_items fieldset.has_many_fields ol > li > label { width: auto; padding-right: 10px;}
form.line_items fieldset.has_many_fields ol > li > div > label.label { width: auto; padding-right: 10px;}
form.line_items fieldset.has_many_fields ol > li > a.has_many_remove { margin-top:20px; }
form.line_items fieldset.has_many_fields ol > li > p.inline-errors { margin: 0.3em 0 0 0; }
这可行,但您必须将表格重写为:
f.inputs 'Line Item/s' do
f.has_many :payment_line_items, heading: false do |form|
form.input :description, label: false
form.input :quantity, label: false
form.input :unit_price, label: false
form.input :amount, label: false
end
end
如果您希望用户能够销毁订单项,您必须像这样设置您的关联和 permit_params:
在你的模型中
accepts_nested_attributes_for :line_items, :allow_destroy => true
并且在activeadmin注册块中:
permit_params \
:line_items_attributes => [:id, :description, :quantity, :unit_price, :amount, :_destroy]
祝你好运!