3

jQuery と Ajax を使用して Rails フォームを送信しようとしていますが、機能していません。理由がわかりません。AJAXを使用して何かをする必要があることはわかっremote: trueていますが、送信ボタンがクリックされたときに他のjQueryアクションを実行し、アクションのステータス、つまり成功と失敗について適切なフィードバックを提供したいので、これでは不十分です。これは私が現在フォームを持っているコードです:

<%= form_for @mail, id: "mail-form", url: subscription_mail_create_recipients_path(@mail) do |f| %>

    <strong>Choose the users you want to target..</strong><br/>

    <%= f.check_box :target_users %> Users                          

    <div class="actions">
    <a id="save-config" class="btn btn-primary purple-button">Save configuration</a>
    </div>
<% end %>

jQuery:

    $('#save-config').click(function(){
        $('#mail-form').submit(function() {
            var valuesToSubmit = $(this).serialize();
            console.log(valueToSubmit);
                            $.ajax({
                                url: $(this).attr('action'), //sumbits it to the given url of the form
                                data: valuesToSubmit,
                                dataType: "JSON" // you want a difference between normal and ajax-calls, and json is standard
                            }).success(function(json){
                                //act on result.
                            });
            alert("method failed");
                            return false; // prevents normal behaviour
        });
    });

私はここの例に取り組もうとしていますレール3のフォームをajaxの方法で送信します(jQueryを使用)

送信ボタンがないのですが、それが機能していないのですか? どんな助けでも感謝します。

4

1 に答える 1

1

コードは、フォームが送信されたときに実行される関数を定義します。ボタンをクリックするたびにこれを行います。しかし、あなたが望むのは、クリックごとにフォームの内容を送信することです。したがって、次のことを試してください。

$('#save-config').click(function(){
  var valuesToSubmit = $('#mail-form').serialize();
  console.log(valueToSubmit);
  $.ajax({
    url: $('#mail-form').attr('action'), //sumbits it to the given url of the form
    data: valuesToSubmit,
    dataType: "JSON" // you want a difference between normal and ajax-calls, and json is standard
  }).success(function(json){
    //act on result.
  });
  return false; // prevents normal behaviour
});
于 2012-11-29T15:46:39.500 に答える