我遇到嵌套表单的问题。 我的控制器是:
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'我在视图中添加的每个新项目(产品)。如果我使用'3times @ encomenda.encomenda_produtos.build'之类的东西,效果很好。 那么,我应该怎么做一个动态表单,我可以添加我想要的产品呢?
全部谢谢!
答案 0 :(得分:1)
啊,几天前我发布了一个类似的答案:
Multiple non-nested model creation on same page
使用此代码,没有进行AJAX调用,它是动态的(您可以根据需要添加任意数量的表单)。
添加字段并只保留一个表单,一个提交按钮:
= form_tag(url: create_user_path, remote: true) do
%table
%tr
%td= text_field_tag 'user[][first_name]'
%td= text_field_tag 'user[][last_name]'
%tr.actions
%td= submit_tag 'Save'
%td= button_tag 'Add new user form', id: 'add_user_form'
%tr.new_user_row.hidden # 'hidden' class matches the css rule: display:none;
%td= text_field_tag "user[][last_name]"
%td= text_field_tag "user[][last_name]"
:javascript # jQuery
$('#add_user_form').bind('click', function(e) {
var row = $('tr.new_user_row').clone().removeClass('hidden new_user_row');
$('tr.actions').before(row); # will append the <tr> before the actions
});
在UsersController中:
def create
params[:user].each do |attr|
User.create(attr)
end
end
希望这有帮助!
答案 1 :(得分:0)
我是新手,对我而言nested_form gem
像黄油一样工作,没有任何头痛
看看这个nested_form