1

我有一张表格

<% @group.lessons.each do |lesson| %>
  <%= form_for [@group, lesson] do |f| %>
    <tr id='<%= lesson.id%>' >
      <td><%= f.text_field :time %></td>
      <td><%= f.text_field :day %></td>
      <td><%= f.text_field :subject %></td>
      <td><%= f.text_field :teacher %></td>
      <td><%= f.text_field :room %></td>
      <td><%= f.submit 'Update'%></td>
      <td><%= link_to 'Delete', [lesson.group, lesson], method: :delete%></td>
    </tr>
  <%end%>
<%end%>

单击“更新”按钮时,每个表单都会更新一个条目。但是,当您编辑两个条目并仅更新一个条目时,您在另一个条目中编辑的信息就消失了。

我想要一个按钮来更新表中的每个条目。我该怎么做呢?

4

2 回答 2

2

更新:

模型第一:

class Group < AR::Base # possibly you'r using ActiveRecord

  attr_accessible :lessons_attributes
  accepts_nested_attributes_for :lessons, :allow_destroy => true

  has_many :lessons

end

然后在你的视图中:# 例如views/groups/_form.html.erb

<table>
    <%= form_for @group do |f| %>
      <%= f.error_messages %>
      <%= f.fields_for :lessons do |lesson_form| %>
        <%= render "lessons/lesson", :f => lesson_form%>
      <% end %>
     <tr><td><%= f.submit 'Update'%></td></tr>
   <% end %>
</table>

在views/lessons/_lesson.html.erb

<tr>
  <td>  
   <%= f.text_field :subject %>
    <%= f.check_box :_destroy %>
    <%= f.label :_destroy, "Remove Lesson" %>
   </td>
</tr>
于 2013-10-03T16:36:34.327 回答
1

我认为这更像是一个 html 问题而不是 rails 问题。您根本不能使用纯 html 提交多个表单。这就是为什么您在提交另一个表格时会丢失一个表格。

但是,您可以做的是使用嵌套属性更新属于同一组的多个课程。这里有一些资源:

于 2013-10-03T16:35:43.377 回答