Как опустить существующие дочерние записи во вложенной форме в направляющих?

В моем приложении у Пользователя есть много Проектов. Я хочу создать, "добавьте много проектов" форма, таким образом, Пользователь может создать много Проектов сразу.

Мне казалось, что самый быстрый путь состоял в том, чтобы заставить Пользователя сформироваться с полями Project, вложенными в нем и опустить поля User. Таким образом, когда форма отправлена, Пользователь, сохраняется, и все новые записи Проекта создаются автоматически.

Однако я не хочу существующие Проекты показать в форме. Только пустые поля для нового проекта, который создается (из @user.projects.build). Существует ли параметр, который я могу передать или что-то, что я могу изменить в форме для исключения существующих записей Проекта?

<% 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. Код хорошо работает. Я просто хочу опустить существующие проекты от разоблачения в этой форме.

7
задан John Topley 26 February 2010 в 17:01
поделиться

2 ответа

Вы можете использовать метод 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", f, :projects %>
   <%= f.submit "save" %> 
<% end %>
7
ответ дан 7 December 2019 в 05:21
поделиться

Вы можете попробовать

  <% f.fields_for :project, Project.new do |project_form| %>
    <%= render :partial => 'project', :locals => {:f => project_form}  %>
  <% end %>

это должно дать вам пустые поля для одной записи.

В контроллере вы можете создать несколько записей для отношений

 5.times { @user.projects.build }

Это создаст пять новых пустых проектов, связанных с пользователем, и ваши текущие fields_for будут иметь поля для новых записей.

1
ответ дан 7 December 2019 в 05:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: