2017-02-28 3 views
0

を提出していない私はあなたが単にremote: trueを供給することにより、AJAXリクエストを経てレールにフォームを送信することができることを知っている:今AJAX:リモート:真の特定のフォームフィールドに

<%= form_for(@user, remote: true) do %> 
    ... 
<% end %> 

:フォームを送信するとき: HTTPリクエストの代わりに、それはajaxリクエストです。

JSリクエスト(ajaxリクエスト)をフォームのフォーム全体ではなく、特定のフィールド要素に対して送信したいが、機能していない。具体的に:

<%= form_for(@user) do %> 

    <div class="field"> 
    <%= f.label :food_type_id %> 
    <%= f.collection_select :food_type_id, FoodType.all, :id, :name, remote: true %>   
    </div> 

    ... 

<% end %> 

私は私がフィールド上remote: trueオプションを提供するので、サーバに送信するAJAX要求を期待する:AJAX要求は、ユーザが選択ボックス内の選択を行う際にオフに解雇する必要があります。したがって:ユーザーが選択を行うたびに、ajaxリクエストが発生します。しかし、何も起こっていない。

私には何が欠けていますか?私は自分自身ですべてをやることができることを知っています:クライアント側の選択ボックスにイベントリスナーをバインドし、選択ボックスが変更されたときにリクエストを開始します。しかし、私はremote: trueがあなたのためにajaxリクエストを処理できると思っていたので、カスタムAjaxリクエストビルディングを行う必要はありません。 form_tagform_forlink_to、およびbutton_to

+0

あなたが選択を提出しようとすると、JSコンソールが言うんか? – IvRRimUm

答えて

2

Railsの組み込みのフォームヘルパーを使用すると、以下のヘルパーにremote: trueを使用することができます。フォーム内の1つのフィールドにremote: trueを追加しても効果はありません。 Working with Javascript in Railsを参照してください。あなたがfood_type_idにJavaScript関数をバインドする必要があります

の選択:

$('select#user_food_type_id').change(function() { 
    $.ajax({ 
    url: '/food_types.json', // you could be fancy and set this in a data attribute. 
    success: function(response) { 
     // update your form with the response from your ajax request 
    } 
    }); 
}); 
関連する問題