Я искал хороший способ создания динамических выпадающих списков, которые являются частью формы.Выпадающие списки должны быть заполнены данными из базы данных на основе предыдущего раскрывающегося списка.Я не нашел хорошего рельса 3 / прототип решения.Я видел некоторые частичные решения с jQuery и использованием прототипов старых помощников .Тем не менее, я прочитал, что использование устаревших помощников не очень хорошая идея, поэтому я пытаюсь обойтись без них, все еще используя прототип.
Я понимаю, что это большой вопрос, однако, я предполагаю, что это уже было сделано несколько раз, и если у кого-то есть хорошее, как это было бы высоко ценится.Если нет, то мой план атаки - использовать onchange, чтобы вызвать вызов javascript для отправки запроса на сервер.Затем обновите частичное, следующее поле выбора, соответствующими параметрами и затем повторите.
Немедленный вопрос: Как вы генерируете вызов страницы ajax, используя прототип?Мне нужно отправить результат первого выпадающего на мой контроллер.URL должен быть car_infos / update_make / "year".
У меня есть этот тег выбора в моей большей форме, который вызывает функцию javascript.
<%= select_tag 'year', options_from_collection_for_select(@vehicle_years, "year", "year"), {:include_blank => true, :onchange => "submitYear(this.value)" }%>
Спасибо за любую помощь, когда я начал работать с Rails.
Обновление: Я генерирую запрос к серверу с этим javascript:
function submitYear(year){
new Ajax.Request('/udpate_make/'+year, {method: 'get'});
}
Однако, он не генерирует правильный URL.Если я добавлю / car_infos / update_make, он сгенерирует car_infos / car_infos / udpate_make /.Если я возьму в / car_infos часть, она просто делает / update_make и пропускает car_infos.Я получаю два или ни одного.До сих пор не знаю, как сгенерировать правильный URL-адрес 'car_infos / update_make / year', я реализую опцию наблюдения, как упомянуто @Jaryl, но все еще возникают проблемы с генерацией URL-адреса.Вот мои маршруты ...
resources :car_infos
match 'car_infos/update_make/:year', :controller => 'car_infos', :action => 'update_make'
Обновление : с другой частью путешествия
Чтобы решить дублирующую часть URL, мне пришлось сделать следующее:
function submitYear(year){
new Ajax.Request('update_make/'+year, {method: 'get'});
}
Обратите внимание на отсутствие / из предыдущего примера.До сих пор не знаю, почему при размещении там car_infos это дублирует его.но по крайней мере я сейчас генерирую действительный Ajax-запрос к серверу.