У меня есть countries, states & cities
Базы данных с их моделями Country, State & City
.Ruby on Rails - Состояние загрузки и город при выборе страны и государства
Текущие ассоциации:
class Country < ActiveRecord::Base
has_many :states
end
class State < ActiveRecord::Base
belongs_to :country
has_many :cities
end
class City < ActiveRecord::Base
belongs_to :state
end
В настоящее время Im используя эту JQuery, чтобы показывать только состояния на основе выбранной страны, но она по-прежнему загружает все состояния в некоторой [опции], который замедляет загрузку страницы.
- jQuery ->
states = $('#q_state_id_eq').html()
update_states = ->
country = $('#q_country_id_eq :selected').text()
options = $(states).filter("optgroup[label=#{country}]").html()
if options
$('#q_state_id_eq').html(options)
# Add in a blank option at the top
$('#q_state_id_eq').prepend("<option value=''></option>")
# Ensure that the blank option is selected
$('#q_state_id_eq option:first').attr("selected", "selected");
else
$('#q_state_id_eq').empty()
$('#q_country_id_eq').change ->
update_states()
update_states()
В моей форме (Я использую Simple_form_for), как я могу добавить collection_select/выберите для countries, states & cities
и ТОЛЬКО НАГРУЗКИ, состояний когда страна выбрана и нагрузки города, когда состояние выбрано?
PS: Нагруженные состояния и города должны быть основаны на том, какая страна и состояние выбрано.
Есть ли какой-либо жемчуг для того, что я ищу, или решение Ajax? (другие решения также оценены)
Это называется каскадным выпадающим списком (https://www.google.com.br/search?q=cascading+dropdowns+in+rails&gws_rd=cr,ssl&ei=vTHQVvDHH4mowASrraTgAQ). – Mohamad
@ Mohamad Tnx, все еще загружает состояния и города в загрузку страницы или только когда выбрана страна и состояние? – Rubioli
Это зависит от вашей реализации. Я ссылаюсь на поиск в Google «каскадные выпадающие списки в Rails», а не на конкретную реализацию. Посмотрите на некоторые ссылки, и я уверен, что вы найдете несколько хороших способов сделать это. – Mohamad