Codeschool のRails コースでは、json (format.json) で ajax を実行するための以下のコードが提供されました。目立たない javascript (format.js) で ajax を実行する方法とコードが大きく異なるのはなぜですか?
具体的には、以下のコードは UJS を完全に回避してremote: true
おり、form_for
. remote: true
これは、で使用する控えめな JavaScript アプローチとは大きく異なりform_for
ます。
remote: true
jsonを使用したajaxが推奨されないのはなぜですか? サーバーの応答がUJSによってjsonデータとして解釈され、UJSがjavascriptとして実行しようとする代わりに関数に渡されるように、jsonを使用したajaxはremote: true
、クライアントのjavascriptがUJSに関数を登録するための何らかの方法を使用すると考えていました。目立たない JavaScript アプローチで行われます。success
success
以下よりもjsonでajaxを行うより良い方法はありますか?
/views/zombies/show.html.erb
<div id="custom_phase2">
<%= form_for @zombie, url: custom_decomp_zombie_path(@zombie) do |f| %>
<%= f.text_field :decomp %>
<%= f.submit "Set" %>
<% end %>
</div>
/app/assets/javascripts/zombies.js.coffee
$(document).ready ->
$('div#custom_phase2 form').submit (event) ->
event.preventDefault()
url = $(this).attr('action')
custom_decomp = $('div#custom_phase2 #zombie_decomp').val()
$.ajax
type: 'put'
url: url
data: { zombie: { decomp: custom_decomp } }
dataType: 'json'
success: (json) ->
$('#decomp').text(json.decomp).effect('highlight')
$('div#custom_phase2').fadeOut() if json.decomp == "Dead (again)"