Я использую рельсы 5.2, и мне нужна форма выбора страны и города.Я использую жемчужину города-государства, чтобы в раскрывающихся списках содержались все страны и города, однако в раскрывающемся списке городов необходимо заранее знать выбранную страну.
Я подумал, что лучше всего это сделать, используя ajax, чтобы пропустить выбранную страну, используя входящий EventListener в раскрывающемся списке.
Моя проблема в том, что запрос ajax не передает записываемую мной переменную JSON, но он передает {"object Object"=>nil, "id"=>"1"}.
. Это то, что у меня сейчас есть:
<%= form_with(model: @user) do |form| %>
<%= form.select :country, CS.countries.values.sort, { :prompt => 'Country'} %>
<%= form.select :city, CS.states('placeholder').keys.flat_map { |state| CS.cities(state, 'placeholder') }, { :prompt => 'City'} %>
<%= form.submit %>
<% end %>
<script>
var countryForm = document.getElementById('user_country');
countryForm.addEventListener('input', function (evt) {
var country = this.value;
Rails.ajax({
type: "GET",
url: '/users/' + <%= params[:id] %> + '/country',
dataType:'json',
data : {'country': country},
error: function (xhr, status, error) {
console.log('error')
console.error('AJAX Error: ' + status + error);
},
success: function (response) {
}
});
});
</script>
Это то, что я вижу в консоли после запроса:
Started GET "/users/1/country?[object%20Object]" for 127.0.0.1 at 2018-06-13 13:19:50 +0200
Processing by UsersController#country as JSON
Parameters: {"object Object"=>nil, "id"=>"1"}
Completed 204 No Content in 1ms (ActiveRecord: 0.0ms)
Есть идеи, что я делаю неправильно?Я пробовал искать везде, но я не вижу руководства по rails 5 о том, как использовать JSON в Ajax.Пожалуйста помоги.Спасибо