改用 jquery-ujs...

昨天聽 othree 提到 jquery-ujs (Unobtrusive scripting adapter for jQuery),裡面有不少 convention 可以直接套用。othree 在三月有寫一篇文章介紹:「jQuery-ujs」。

雖然 repository 看起來是給 RoR 使用,但直接把 rails.js 抓下來用「<script src="rails.js"></script>」掛上來,還是可以用在非 RoR 環境裡。

直接看 code 也很好懂,舉幾個例子來說:

<?php $sToken = hash('sha256', session_id()); ?>
<meta name="csrf-token" content="<?php echo $sToken; ?>">
<meta name="csrf-param" content="sToken">

表示 CSRF token 名稱為 sToken,值為 hash('sha256', sesssion_id())

對於想要先跳出 confirm dialog,再決定要不要繼續執行的連結,可以加上 data-confirm 表示:

<a href="/delete/1" data-confirm="是否要刪除?">

如果要用 POST (上面的 delete operation 不應該用 GET,因為資料被變更),可以加上 data-method

<a href="/delete/1" data-confirm="是否要刪除?" data-method="post">

或是直接用 DELETE,在 server side 可以讀 _method 這個值:

<a href="/delete/1" data-confirm="是否要刪除?" data-method="delete">

最後,建議大家去看 jquery-ujs 的 wiki,上面有針對用法有比較完整的說明,配著 source code 一起看會比較容易上手。

One thought on “改用 jquery-ujs...”

  1. 我最喜歡就是它的 convention 訂的很棒,完全不用花自己大腦想,而且不用 Rails 要自己實作也不難

Leave a Reply

Your email address will not be published. Required fields are marked *