Я использую рельсы 5.2 и хотел бы иметь форму выбора страны и города. Я использую жемчужину города-государства, чтобы иметь раскрывающиеся списки, содержащие все страны и города, однако раскрывающийся список городов должен знать страну, выбранную заранее.
Я подумал, что лучше всего это сделать с помощью ajax для передачи выбранной страны с помощью прослушивателя событий ввода в раскрывающемся списке.
Моя проблема в том, что запрос 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)
Есть идеи, что я делаю не так? Я пробовал искать везде, но я не вижу никаких руководств по использованию JSON в Ajax. Пожалуйста помоги. Спасибо