0

我已经在这个主题上研究了一段时间,但还没有找到真正的解决方案来解决我想要实现的目标。

我正在使用嵌套的一对多嵌套表单(项目有很多任务)。每个任务都有许多属性,例如类型、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()

但是有更清洁的方法吗?

4

0 回答 0