我有以下代码在我的发票模型中创建嵌套模型(invoice_line_items):
= nested_form_for @invoice, mutipart: true, class: "form-horizontal" do |f|
...
%table.table.table-bordered{:id => "line-items"}
%thead
%tr
%th
%th Description
%th Quantity
%th Rate
%tbody
%tr
= f.fields_for :invoice_line_items do |line_item|
%td= line_item.link_to_remove "X"
%td= line_item.text_field :description
%td= line_item.text_field :quantity, :class => "input-mini"
%td= line_item.text_field :rate, :class => "input-mini"
= f.link_to_add "Add", :invoice_line_items, :data => { :target => "#line-items" }
我有两个问题:1)当我通过单击“添加”添加新行时....它与表格格式不匹配,并且不会插入到表格中。我尝试了一切让它发挥作用,但事实并非如此。我也尝试在他的宝石文档中添加ryanb提到的“:target”。 2)我想在发票页面上为用户准备好3个invoice_line_items,但我不知道该怎么做。
编辑:因为我一直在玩它,所以我现在有点不同了。我不认为我现在做得不错,但现在每次点击“添加”时它都会创建一个新表单: .row-fluid
= f.fields_for :invoice_line_items, :wrapper => false do |line_item|
%table.table.table-bordered#tasks
%thead
%th
%th Description
%th Quantity
%th Rate
%tr.fields
%td= line_item.link_to_remove "X"
%td= line_item.text_field :description
%td= line_item.text_field :quantity, :class => "input-mini"
%td= line_item.text_field :rate, :class => "input-mini"
.row-fluid
= f.link_to_add "Add", :invoice_line_items, :data => { :target => "#tasks" }
答案 0 :(得分:1)
这是一个很难理解的问题,但事实证明,最新版本的nested_form.js文件没有附带最新版本的nested_form.js文件(尽管文档中说使用此函数) 。因此,要使其工作,我必须将其添加到我的application.js:
$(function ($) {
window.NestedFormEvents.prototype.insertFields = function(content, assoc, link) {
var target = $(link).data('target');
if (target) {
return $(content).appendTo($(target));
} else {
return $(content).insertBefore(link);
}
};
});
这覆盖了jquery_nested_form.js中的函数,现在一切正常。