2016-04-20 12 views
9

Czy istnieje klejnot z kraju i miasta, w którym użytkownik będzie mógł wybrać kraj i na podstawie wybranego kraju wybierze miasto?Jak uzyskać listę wszystkich krajów i miast w szynach?

otrzymuję wiele rozwiązań, ale nie wszystkie stany wsparcia miasta

gem 'country_select' 
gem 'countries' 
gem 'carmen-rails' 

Chcę listę wszystkich krajów na liście rozwijanej, a kiedy wybrać dowolny kraj, a następnie pojawi się wszystkie miasta kraju w miastach rozwijanej. Czy to możliwe przez jakiś klejnot?

+0

Powodem ktoś downvoted pytanie jest najprawdopodobniej z powodu pytań z prośbą o zaleceniach biblioteki są ogólnie uważane za off-topic SO jak stwierdził [Jakie tematy mogę zapytać tutaj? (pozycja listy 4) w centrum pomocy] (http://stackoverflow.com/help/on-topic). – ndn

Odpowiedz

18

Użyj trafnie nazwanego city-state gem.


Jak widać przez README, można zrobić:

CS.cities(state, country) 

Jeśli chcesz wszystkie miasta w danym kraju, niezależnie od stanu, można zrobić:

CS.states(country).keys.flat_map { |state| CS.cities(state, country) } 

Aby wymień wszystkie kraje:

CS.countries 

Fajną rzeczą jest to, że używa danych z MaxMind, dzięki czemu możesz mieć pewność, że lista będzie aktualna. Aby odświeżyć listę, można uruchomić:

CS.update 

Jedyną wadą jest to, że wymaga szyny (aktywne wsparcie specjalnie) do uruchomienia, ale to nie jest problemem w Twoim przypadku.

+0

Nie jestem pewien, dlaczego ta odpowiedź nie została więcej zaakceptowana. Żadna z pozostałych odpowiedzi nie wydaje się odpowiadać temu, o co prosił OP - liście * miast *, a nie stanów czy krajów ... – GoGoCarl

+0

@GoGoCarl z drugiej strony ludzie zestrzelili moje pytanie i nie wiem co w nim jest nie tak –

6

Można spróbować jQuery Plugin - bootstrap state picker

Po tym wtyczki wewnątrz aplikacji

Można go używać tak (przykład z http://bootstrapformhelpers.com/state):

<select id="countries_states1" class="form-control bfh-countries" data-country="US"></select> 

<select class="form-control bfh-states" data-country="countries_states1"></select> 
5

Można wykorzystać kraj kompletacji jQuery wtyczki Bootstrap w następujący sposób:

<select class="form-control bfh-countries" data-country="US"></select> 
+0

Każdy link powiązany z tym? –

+0

@haseeb tak można dostać więcej stąd http://bootstrapformhelpers.com/country/ –

4

Moja rada jest taka, że ​​jeśli nie można być w 100% pewien, że lista jest dokładne i kompletne (a jestem sceptyczny, że jest to możliwe), nie oddają.

Zarejestrowałem się na stronach internetowych w Singapurze i innych miejscach, gdzie musiałem wybrać z rozwijanej listy miast, które nie obejmowały mojego miasta (i wielu innych) prawidłowych miast (ja mieszkam w USA). Byłem zmuszony wybrać niewłaściwą wartość dość daleko, ponieważ lista była dość niekompletna i nie pozwoliłaby mi niczego nie wybrać.

Przynajmniej, jeśli chcesz dokonać wyboru, pozwól użytkownikowi wprowadzić wartość nieuwzględnioną w tych wyborach.

+0

Sztuką jak zawsze jest korzystanie z usług zewnętrznych. :) – ndn

+0

Nie mogę twierdzić, że wiem, czy wspomniane witryny korzystają z usług zewnętrznych, ani czy wszystkie usługi zewnętrzne są dokładne i dokładne ... ale z pewnością jest to kwestia do zakwestionowania i weryfikacji. –

+0

Tak, może używać listy tylko dla krajów, ponieważ to nie zmienia się często, ale zamierzam użyć listy miast i stanów dla autouzupełniania w wolnym polu tekstowym. – Chloe

Powiązane problemy