0

Codeschool のRails コースでは、json (format.json) で ajax を実行するための以下のコードが提供されました。目立たない javascript (format.js) で ajax を実行する方法とコードが大きく異なるのはなぜですか?

具体的には、以下のコードは UJS を完全に回避してremote: trueおり、form_for. remote: trueこれは、で使用する控えめな JavaScript アプローチとは大きく異なりform_forます。

remote: truejsonを使用したajaxが推奨されないのはなぜですか? サーバーの応答がUJSによってjsonデータとして解釈され、UJSがjavascriptとして実行しようとする代わりに関数に渡されるように、jsonを使用したajaxはremote: true、クライアントのjavascriptがUJSに関数を登録するための何らかの方法を使用すると考えていました。目立たない JavaScript アプローチで行われます。successsuccess

以下よりも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)"
4

1 に答える 1

0

remote_form_forヘルパーを使用できます。

/views/zombies/show.html.erb

<div id="custom_phase2">
  <%= remote_form_for @zombie, url: custom_decomp_zombie_path(@zombie), :update => {:success => "form", :failure => "errors"} do |f| %>
    <%= f.text_field :decomp %>
    <%= f.submit "Set" %>
  <% end %>
</div>

ここで、「フォーム」は成功時に更新される要素の ID であり、「エラー」はエラーが発生した場合に更新される要素の ID です。

参考文献:ここここ

于 2013-02-15T16:58:35.287 に答える