2010-08-12 71 views
0

介绍如何为嵌套窗体生成多个窗体?

我有一个对象@organization说的has_many:quick_facts

基本上,我想为每个一个_form:quick_fact但有一个保存按钮,即保存所有quick_facts的。

我的两个问题:

第一个问题:

我quick_facts不与他们的信息预先填充。它们只对我有的每个quick_fact显示为空白。

第二问题

保存按钮出现在每一单个窗体上

我伤心难过的尝试:

​​

回答

1

你真的只需要一个形式在这里,因为你想要一次提交所有内容。

这里是我的建议:

使用部分呈现标签和快速的事实文本选项(如果你希望它是文本)。你希望这个部分每一个简单的事实被渲染一次,所以在render方法中使用:collection选项来指定快速事实的集合。每个部分都会得到你自己的任何quickfact的本地副本,并且还会创建一个名为quickfact_counter的变量。

此外,你将要使用:当地人选项的形式传递给部分作为一个局部变量,所以,你可以做f.label,f.text_area

所以,总而言之,你的新的形式将是这样的:

<% form_for @organization do |form| %> 
    <%= render :partial => "partial_name", :collection => @organization.quick_facts, :locals => {:form => form} %> 
    <%=form.submit 'save', :class => 'button'%> 
<% end %> 

那么你的部分就只能

<%= form.label :quick_fact, 'QuickFact' %> 
<%= form.text_field :quick_fact %> 

如果你想获得更丰富的,你可以使用布局来呈现的形式,并有它遵从部分,但这应该足以让你开始。能够将集合传递给partial是我最喜欢的Rails功能之一。