我遇到了嵌套表单的问题。我的控制器是:
def new
@encomenda = Encomenda.new
@encomenda.encomenda_produtos.build
respond_to do |format|
format.html # new.html.erb
format.json { render json: @encomenda }
end
end
我的看法是:
<ul id="invitelist">
<li>
<%= f.fields_for :encomenda_produtos do |a| %>
<%= a.label :id_produto, t("activerecord.attributes.encomenda_produto.produto", :default => "Produto"), :class => :label %>
<%= a.collection_select :id_produto, Produto.order('nome_produto'), :id_produto, :id_produto, :class => 'collection_select_field' %>
<br><br>
<% end %>
</li>
</ul>
Javascript是:
<script>
$(document).ready(function() {
$('#botao_novo_produto').click(function() {
if ($('#invitelist li').length < 7)
$('#invitelist li:last').clone().find('input').val('')
.end().appendTo('#invitelist');
else
alert('Número máximo de produtos')
});
$('#botao_remove_produto').click(function() {
if ($('#invitelist li').length > 1)
$('#invitelist li:last').remove();
else
alert('Uma encomenda deve conter ao menos 1 produto.')
});
});
</script>
我的问题是我需要在视图中添加的每个新项目(产品)都添加“@encomenda.encomenda_produtos.build”。如果我使用“3.times @encomenda.encomenda_produtos.build”之类的东西,效果很好。那么,我应该怎么做才能拥有一个可以添加任意数量产品的动态表单呢?
谢谢大家!