Я создал вложенную модель из примера RailsCasts Nested Model Form Part 2, и он работает с Rails 3 и JQuery.В настоящее время пользователь может создать новый проект и щелкнуть ссылку, чтобы добавить новые задачи, а внутри каждой новой задачи щелкнуть ссылку, которая позволит ему добавлять новые назначения для каждой задачи.Вот ссылка для создания новой задачи (ссылка для создания новых заданий аналогична):
<p><%= link_to_add_fields "Add task", f, :task %></p>
Это относится к этому помощнику:
def link_to_add_fields(name, f, association)
new_object = f.object.class.reflect_on_association(association).klass.new
fields = f.fields_for(association, new_object, :child_index => "new_#{association}") do |builder|
render(association.to_s.singularize + "_fields", :f => builder)
end
link_to_function(name, h("add_fields(this, \"#{association}\", \"#{escape_javascript(fields)}\")"))end
Работает так: нажавссылка, HTML добавляется через JQuery, который отображает поле формы для имени задачи и ссылку, которая позволяет пользователю добавлять новые назначения для задачи.
Я хотел бы, чтобы рядом с полем имени задачи появлялись формы назначений, чтобы пользователю не нужно было щелкать дополнительную ссылку для добавления новых назначений в каждую задачу.Я могу сделать это, когда страница сначала загружается через контроллер проекта:
1.times do
task = @product.tasks.build
1.times { task.assignments.build}
end
Однако, поскольку я использую JQuery для добавления и удаления HTML, контроллер не будет вызываться, а формы не будут создаватьсяпри «добавлении» новых задач.
Существует ли способ автоматически «строить» вложенные поля назначения (из части задачи) при создании поля новой задачи?
Вот мой частичный вариант для формы задачи, которая создается, когда пользователь нажимает ссылку «новая задача» в форме:
<div class = "fields">
<%= f.label :name, "Task name"%>
<%= link_to_remove_fields "remove", f %><br />
<%= f.text_field :name %>
<% f.fields_for :assignments do |builder| %>
<%= render 'assignment_fields', :f => builder %>
<% end %>
<p><%= link_to_add_fields "Add assignments", f, :assignments %></p>