我已就这一主题进行了一段时间的研究,但尚未找到真正解决我想要实现的目标的方法。
我正在使用嵌套的一对多嵌套表单(Project有很多任务)。并且每个任务都有许多属性,例如type,assigned_individual,due_date等。在一次提交中保存/更新父项目和嵌套子模型任务我没有问题。但我需要实现的目标似乎与这项努力相反。除了全局提交之外,我还需要为每个任务进行一次Ajax保存调用。因此,当任务列表变长时,用户不必担心丢失他们之前为其他任务编写的内容。他们可以点击该保存按钮并获得反馈,说明他已为该任务输入的内容已保存。
目前,Project位于form_for包装器中,而Tasks位于fields_for partial中 这些是我现在拥有的简化版本。 这是edit.html.erb中的表单
<%= form_for @project do |f| %>
<p>f.text_field :title</p>
<p>f.text_field :author</p>
<%= render :partial=> 'tasks', :collection=> @project.tasks %>
<%= f.submit 'submit' %>
<% end %>
这是部分任务:
<%= fields_for :tasks do |f| %>
<label>Category</label>
<%= f.text_field :category%>
<label>Description</label>
<%= f.text_field :description%>
<label>Author</label>
<%= f.text_field :author%>
<label>Assigned Individual</label>
<%= f.text_field :assigned_individual%>
<label>Notes</label>
<%= f.text_area :notes%>
<label>Due Date</label>
<%= f.text_field :due_date%>
<button onclick='update_task();'>Save Task</button>
<% end %>
由于我不能在一个表单中有多个提交按钮,我现在能想到的是使用jQuery来收集该部分中的每个用户条目,并将它们作为大哈希传递回任务控制器更新方法。
update_task()
但是有更清洁的方式吗?