используя жемчужину города-государства в рельсах - PullRequest
0 голосов
/ 08 января 2019

Привет, ребята, я в настоящее время работаю над формой регистрации устройства, конечная цель - пользователь может выбрать штат из Соединенных Штатов, а тег выбора ниже заполнит правильные города в этом штате. Я использую жемчужину города-государства. https://github.com/loureirorg/city-state

я смотрел на другие примеры, подобные этому https://forum.upcase.com/t/dependent-country-city-state/7038 мой код ниже

routes.rb

resources :states, only: :new 

registrations.new.html.erb

   <div class="field">
        <%= f.select :state, options_for_select(CS.states(:us)), {:prompt => "State"}, {:class => "signup-input-container--input", :id => "state-picker"} %>
   </div>
   <div class="field">
        <%= f.select :city, options_for_select([]),{}, {:class => "signup-input-container--input", :id => "city-picker"} %>
   </div>

main.js

 document.addEventListener("turbolinks:load", function(){
  var state = document.getElementById("state-picker");
  state.addEventListener("change", function() {
    Rails.ajax({
     url: "/states?country=" + "United States" + "&state=" + 
     state.value,
     type: "GET"
    })
  })
});

регистрация-controller.erb

 def new
  super
  @cities = CS.get(:us, params[:state])
 end

new.js.erb

    var city = document.getElementById("city-picker");

    while (city.firstChild) city.removeChild(city.firstChild);

    var placeholder = document.createElement("option");
    placeholder.text = "Choose a city";
    placeholder.value = "";
    city.appendChild(placeholder);

   <% @cities.each do |c| %>
     city.options[city.options.length] = new Option('<%= c %>');
   <% end %>  

я пытаюсь заставить это работать так, как показано в примере. единственное отличие состоит в том, что пользователи будут выбирать только штаты из США и города

1 Ответ

0 голосов
/ 08 января 2019

Из нашего обсуждения в комментариях, похоже, проблема в том, что вы запрашиваете неправильный URL для своих городов.

У вас есть маршрут на /states/new, но вы делаете запрос на /states. Попробуйте обновить main.js до:

 document.addEventListener("turbolinks:load", function(){
  var state = document.getElementById("state-picker");
  state.addEventListener("change", function() {
    Rails.ajax({
     url: "/states/new?state=" + state.value,
     type: "GET"
    })
  })
});

(Я удалил параметр страны в URL-адресе, потому что вы, кажется, не используете его, вы говорите, что он нужен только для США.)

Дайте мне знать, как вы справляетесь с этим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...