カスタムルートにAJAX GETリクエストを送信してから、コントローラのアクションがjson
のフォーマットに応答し、そのGETリクエストで渡されたパラメータに基づいてコレクションを返す必要があります。あなたが選択したメイクに基づいて、利用可能な車のモデルをロードしている、と言う:
路線:
get '/get_models/:make_id', to: 'car_makes#available_models'
コントローラのアクション:
def available_models
@models = Model.where(id: ids)
respond_to do |format|
format.json { render json: @models }
end
end
AJAX要求:
var fetchModels = function(makeId){
$.ajax({
method: 'GET',
url: '/get_models/' + makeId,
success: function(data) {
...
var target = $('select#car_models'); // field to which options are appended
$.each(data, function(id, model){
$(target).append(
$('<option>').text(model).attr('value', id) // populate options );
});
}
...
});
}
、次に設定親の.change
イベントで発生するAJAXリクエストselect
fie LD:
$('select#car_makes').change(function(){
var makeId = $(this).val();
fetchModels(makeId);
});
これを達成するための他の方法を説明するリソースの数があります。
だから私は理解し、大部分はこれを取得、私が持っている切断は、レールの形と一緒にこの情報を使用する方法との間にあります選択したオブジェクトを編集して保存することができます。 – Kevin
私はこれが何であれ、車の製造を選択し、次に利用可能な車のモデルのための別のドロップダウンを更新することができると言うことができますから。あなたの類推を続けるためには、私は車の製作者を選ぶことができるようにする必要があります、そして車の属性の属性を変更することができます。それを保存。 – Kevin
したがって、訪問者に 'makes'コレクションで1つの選択をさせたい場合、makeが選択されると、' make'オブジェクトの属性を持つフィールドが同じフォームに追加されます。正しい? –