表の行内にフォームを配置するのは正しくないと理解しています。ただし、これを行うには実際的な理由があるようです。
各行を個別に編集できるようにしたいので (ajax など)、それぞれが独自の形式であることは理にかなっています。
以下は機能的にテーブルとフォームをレイアウトする必要がある方法ですが、マークアップは有効ではありません。さらに、haml/erb は実際にはこのようなマークアップを処理しません (フォームは最初のセル内で開かれ、閉じられます)。
display: table-cell などを使用できますが、表示しているデータは意味的にテーブルに属していると思います。
適切なマークアップを使用して同じ機能を実現するにはどうすればよいですか?
<table>
<thead>
<tr>
<th>id</th>
<th>name</th>
<th>email</th>
<th>phone</th>
<th>address</th>
</tr>
</thead>
<tbody>
<tr>
<%= form_for person do |f| %>
<td><%= id %></td>
<td><%= f.text_field :name%></td>
<td>...</td>
<td>...</td>
<td>...</td>
<% end %>
</tr>
</tbody>
</table>