Я пытаюсь попасть в базу данных на выходе из поля без перезагрузки формы с помощью Ajax. Контроллер должен выполнить некоторый процесс по данным, полученным из базы данных, и отреагировать на представление. Затем пользователь продолжит ввод.Ajax request not work rails 4
Я что-то упускаю и просто не вижу, что не так. У меня есть тот же кусок кода, который работает в приложении Rails 3.2 без проблем. В Rails 3.2 запрос переходит к методу check_matricula
, но в Rails 4 он переходит в действие show
.
Следующий код не работает в моей Rails 4 приложения:
Gemfile
gem 'responders', '~> 2.0'
Посмотреть
<div class="field">
<%= f.text_field :matricula, { "data-remote" => true, "data-url" => "/liquidaciones_de_viajes/check_matricula", "data-type" => :json, :size => 10 } %>
<span id="check_matricula"> </span>
</div>
Контроллер
class LiquidacionesDeViajesController < ApplicationController
respond_to :html, :json
def check_matricula
@matricula = Matricula.find_by_codigo(params[:liquidacion_de_viajes][:matricula])
# ... some process that result in matricula_ok true or false ...
if matricula_ok
respond_with(@matricula.empresa.razon_social)
else
respond_with(nil)
end
end
end
активы/JavaScripts/check_matricula.js
$(document).ready(function() {
$("#liquidacion_de_viajes_matricula").bind('ajax:success', function(evt, data, status, xhr) {
if (data !== null) {
$('#razon_social').html(data.razon_social);
$('#check_matricula').html('');
} else {
$('#check_matricula').html('Error de matricula');
$('#razon_social').empty();
}
});
$("#liquidacion_de_viajes_matricula").live('ajax:before', function() {
if ($(this).val() == '') {
return false;
}
});
$("#liquidacion_de_viajes_matricula").focus(function() {
$('#check_matricula').empty();
$('#razon_social').empty();
});
});
я вижу в консоли GET находится там, но я сделал сообщение в маршруте:
Started GET "/liquidaciones_de_viajes/check_matricula?liquidacion_de_viajes%5Bmatricula%5D=5555" for 127.0.0.1 at 2016-05-30 15:00:50 -0300
Processing by LiquidacionesDeViajesController#show as JSON
Parameters: {"liquidacion_de_viajes"=>{"matricula"=>"5555"}, "id"=>"check_matricula"}
Первый шаг, который я мог бы предложить вам в отладки для проверки запросов & ответов. Перейдите на страницу формы. Если вы используете Chrome, щелкните правой кнопкой мыши на странице и нажмите «Осмотреть». В инструментах разработчика, которые будут всплывать, нажмите вкладку «Сеть». Затем попробуйте ввести в свой 'f.text_field: matricula'. Затем вы должны заметить, что эти новые запросы появятся в этой панели инструментов разработчика. Нажмите этот запрос в инструментах разработчика, и появится новая панель. В этой боковой панели нажмите «Ответ». Затем проверьте правильность ответа. Если это не помогло, следующим шагом будет отладка JS или контроллера. –