digifacture

Railsとかデジモノとか色々勉強した事とか作った事とか気になった事とか

ajaxでrender partialとtableとauthenticity_token

partialで送信フォームをrenderする際に、tableタグを親にformを.html()で描画するとauthenticity_tokenが認識されず送信フォームが機能しなくなる。

色々試すうちにrender partialを実行された際にtableタグ周りの挙動がどうにも不信だった。

たとえば送信フォームをtableタグ内の指定のdivタグ内に設置しようと下記のようなコードをテンプレートhtml.erb書く

<table id="apptable">
<div id="hoge">
<%= render :partial=>"app_list", :locals=>{:apps=>@apps} %>
</div>
</table>

 

 すると実際に生成された.htmlには、本来tableタグに入れ子になっていたdivタグがなぜかtableタグの外に出されていた。

<div id="hoge"></div>
<div style="margin:0;padding:0;display:inline”>…</div>
<table id="apptable">
<tbody>…
</tbody></table>

 もしやと思ってテンプレート内の表の描画をやめてdivタグだけにしたらpartialとjsによって設置された送信フォームでも機能するようになった。

authenticity_tokenは記載されていたにも関わらず、tableタグにjsで動的にフォームを設置すると送信フォームが機能しなくなるのかわからずじまい

railsがどのようにしてauthenticity_tokenを認識してるのか学ぶ必要がある

ぐぬぬ

でもrails4だとまた違うのかも