Rails 2级嵌套表单动态添加字段

时间:2011-12-20 12:59:54

标签: jquery ruby-on-rails nested-forms

我仍然试图让我的表单使用Ryan Bates Nested_fom插件。问题是我有一个2级嵌套表单,当我使用f.link_to_add函数时,它只添加第一级而不是第二级动态...

当我点击添加链接时,它只会为第一级嵌套创建一个新行,但不会为附加的第二级嵌套级别创建一行......

对于您的信息模型是::pinvoices有很多:pinvlines(第一个嵌套级别)和:pinvlines有很多:lignes(第二个嵌套级别)。

以下是主要表格的代码:

<%= javascript_include_tag 'javascript_pinvlines_fields_new' %>
<%= nested_form_for @pinvoice do |f| %>
<% if @pinvoice.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@pinvoice.errors.count, "error") %> prohibited this pinvoice from being saved:</h2>
<ul>
<% @pinvoice.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<p>
<%= f.label :contact %>
<%= f.text_field :contact, :id => 'test' %>
<%= f.label :date_facture %>
<%= f.date_select :date_facture %>
<%= f.label :montant_total %>
<%= f.text_field :montant_total %>
<br />
<br />
<div class="lignes">
<%= f.fields_for :pinvlines  %>
</div>
<%= f.link_to_add "Ajouter une ligne", :pinvlines %>
<br />
<p>
<div class="actions">
<%= f.submit %>
</div>
</p>
<% end %>

然后这是部分:

<%= f.label :description %>  
<%= f.text_field :description %>
<%= f.label :compte_id %>
<%= f.collection_select(:compte_id, @compte, :id, :nom, {:prompt => "Type de charge"}) %>
<%= f.label :quantite %>
<%= f.text_field :quantite, :class => "ip", :size => 6 %>
<%= f.label :prix_unitaire %>
<%= f.text_field :prix_unitaire, :class =>"ip", :size => 6 %>
<%= f.label :montant_HTVA %>
<%= f.text_field :montant_HTVA, :size => 6 %>
<%= f.link_to_remove "remove" %>
<p>
<%f.fields_for (:lignes) do |b|%>
<%= b.label :journal_id %><br />
<%= b.text_field :journal_id %>
<%= b.label :compte %><br />
<%= b.text_field :compte %>
<%= b.label :compte_id %><br />
<%= b.text_field :compte_id %>
<%= b.label :montant %><br />
<%= b.text_field :montant %>
</p>
<%end%>

控制器看起来像:

def new
@pinvoice = Pinvoice.new
@compte = Compte.find(:all)
1.times do
pinvline = @pinvoice.pinvlines.build
2.times{pinvline.lignes.build}
end

respond_to do |format|
  format.html # new.html.erb
  format.xml  { render :xml => @pinvoice }
end
end

有没有Jquery和rails的天才来帮助我解决这个非常棘手的问题...非常感谢。

1 个答案:

答案 0 :(得分:1)

谢谢你们。我终于使用旧的学校方式完成了这项工作:form_for和fields_for