【发布时间】:2017-02-16 03:59:56
【问题描述】:
我正在显示一个学生表,并希望每一行都有一个表单元素,可用于更改有关该学生的信息。我目前拥有的(如下所示)仅适用于表中的最后一个学生,因为它看起来 :manual_choice 和 :student_id 不是逐行唯一的表单字段。
如何让所有学生的列表理解为表格的每一行生成唯一的表单字段,以便在我提交表单时,我可以更新为他们选择了 manual_choice 的学生?
<%= form_for @changeset, assignments_path(@conn, :manual_assign), fn f -> %>
<table id="students" class="display" cellspacing="0" width="100%">
<thead>
<tr>
<th>Student Name</th>
<th>Assigned Project</th>
<th>Override Assignment</th>
</tr>
</thead>
<tbody>
<%= for student <- @all_students do %>
<tr>
<td><%= student.student_name %></td>
<td><%= student.assigned_project %></td>
<td class="text-right">
<div class="form-group">
<%= select f, :manual_choice, @projects, class: "form-control", id: "manual_choice" %>
<%= text_input f, :student_id, class: "form-control", value: student.id, style: "display:none" %>
</div>
</td>
</tr>
<% end %>
</tbody>
</table>
<% end %>
【问题讨论】:
-
为什么不把
form_for放在2 个输入(select 和text_input)周围?页面上可以有多个表单,提交一个只会提交该表单的值。 -
这可行。然后我需要为每一行提供一个提交按钮,对吗?
-
是的。您希望能够同时更改多个学生吗?
标签: forms elixir phoenix-framework