通常のフォームを非同期通信でやるのはこっち:
本稿はフォームとかなし、普通にjQuery.ajax()
で送信してどうこうっていうパターンについて。メモ。そのうち清書してブログ記事にしたい。
<div class="item" data-item-id="<%= item.id %>"></div>
_save: ($item) ->
id = $item.attr('data-chair-id')
($.ajax {
url: "/chairs/#{id}.json"
method: 'PATCH'
data: $.param({
item: {
# …
}
})
})
.error (xhr, status, subject) ->
alert('ERROR')
console.error(arguments)
.complete () =>
@_stop_loading($item)
@_start_loading($item)
ほとんどCoffeeScriptを書いただけだけど、Railsっぽいところについて:
- $.param(obj)で標準的なリクエストパラメーターの形式にする
- 送信情報は
data
じゃなくてdata.item
とかそういうのにする -
method
は更新なので"PATCH"
(Rails3までは"POST"
)、削除時は"DELETE"
- 本当はURLもerbとかそういうのでやりたい(このままだと
root_path
が"/"でないとしぬ) - 関数を呼ぶところは頑張れ