在我的应用程序中,用户有很多项目.我想创建一个“添加多个项目”表单,因此用户可以一次创建多个项目.
在我看来,最快的方法是在其中嵌套项目字段的用户表单,并省略用户字段.这样,当提交表单时,将保存用户并自动创建所有新的项目记录.
但是,我不希望现有的项目显示在表单中.只有正在创建的新项目的空字段(来自@ user.projects.build).是否有我可以传递的参数或我可以在表单中更改的内容以省略现有的Project记录?
<% form_for (@user) do |f| %> <% f.fields_for :project do |project_form| %> <%= render :partial => 'project',:locals => {:f => project_form} %> <% end %> <%= add_child_link "New Project",f,:projects %> <%= f.submit "save" %> <%end%>
我正在使用Ryan Bate的complex forms例子.代码工作正常.我只是想省略现有项目以这种形式出现.
解决方法
你可以使用new_record吗?区分新创建的记录和旧记录的方法:
<% form_for @user do |f| %> <% f.fields_for :project do |project_form| %> <%= render :partial => 'project',:locals => {:f => project_form} if project_form.object.new_record? %> <% end %> <%= add_child_link "New Project",:projects %> <%= f.submit "save" %> <% end %>