Ajax でテーブルへの追加
Railsでテーブルを使ったレイアウトに対してRJSを適用しようとすると,
tableにTrを追加しようとしてもうまく追加できない(IEで顕著)というような問題によくぶつかる.
IEでは、HTMLのテーブルへ tr 要素を追加するには、tbody へ tr 要素を追加しないとエラーになってしまう。(IE6のみで確認)
Opera や Firefox は tbody とか無くても大丈夫。ただし、Opera は 9.10 以降のみ。それ以前のバージョンでは、正しく追加されない。
table.rhtml
<table> <thead><th>カラム名</th></thead> <tfoot></tfoot> <tbody id="target"> <% @list.each {|e| -%> <tr><td><%= e.name %></td></tr> <% end -%> </tbody> </table>
add.rjs
page.insert_html :bottom, 'target', "<tr><td>#{@e.name}</td></tr>"
tr 要素の追加先は tbody に対して行う。table とかに追加しようとするとエラーになるので注意。