我已经在这个主题上研究了一段时间,但还没有找到真正的解决方案来解决我想要实现的目标。
我正在使用嵌套的一对多嵌套表单(项目有很多任务)。每个任务都有许多属性,例如类型、assigned_individual、due_date 等。在一次提交时保存/更新父项目和嵌套子模型任务没有问题。但我需要实现的似乎与这种努力相反。除了全局提交之外,我还需要为每个任务调用一个 Ajax 保存调用。因此,当任务列表变长时,用户不必担心丢失他们之前为其他任务编写的内容。他们可以单击该保存按钮并获得反馈,说明他为任务输入的内容已保存。
目前,该项目位于 form_for 包装器中,而任务位于 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()
但是有更清洁的方法吗?