Rails: использование ввода из выпадающего меню без публикации - PullRequest
2 голосов
/ 17 декабря 2010

Я довольно новичок в Rails и веб-разработчике в целом. Мне нужно отобразить два выпадающих меню, штаты и школы, чтобы школы отображались только после того, как пользователь выбрал штат, а школы должны отображать школы только в выбранном штате. Что я не знаю, так это как я могу использовать выбор состояний, чтобы динамически решать, какие школы отображать, без необходимости нажимать кнопку «Отправить». Я понимаю, что мне может понадобиться использовать JavaScript, но я плохо знаю JS, я не совсем уверен, как это сделать. Надеюсь, у меня есть смысл. Спасибо!

Ответы [ 2 ]

3 голосов
/ 17 декабря 2010

Вот простой пример динамического заполнения выбора на основе структур данных, уже имеющихся в вашем JavaScript. Если вам нужно выполнить запрос к серверу после того, как пользователь выберет состояние и вернет список школ, вам понадобится другой код (и полезная библиотека, такая как jQuery).

2 голосов
/ 17 декабря 2010

Я думаю, вы хотите сделать это с AJAX.Я не собираюсь настраивать это для Rails 1, но вы должны быть в состоянии следовать этой идее.Ваш первый выпадающий список содержит список штатов, и в каждом штате есть список школ.

// some js file that's loaded from your layout
// When your states dropdown is changed it fires an ajax call
var success = function(response) {
  for (var school in response.schools) {
    $('#schools_dropdown').html('');
    var option = $(document.createElement('option')).html(school.name).val(school.id);
    option.appendTo($('#schools_dropdown'));
  }
});

$('#states_dropdown').change(function() {
  $.get('/state/' + $(this).val() + '/schools', success);
});

# your schools controller
def index
  @schools = State.find(params[:id]).schools
  respond_to do |format|
    format.js { render :json => @schools }
  end
end

Так что, возможно, у вас нет jQuery и, возможно, рендеринг json отличается от Rails 1 ... но идея та же.У вас есть некоторый javascript, прикрепленный к вашему раскрывающемуся списку состояний, чтобы при его изменении вы извлекали идентификатор этого состояния и выполняли AJAX-вызов вашего контроллера.Последний параметр этого вызова AJAX - это функция успеха, которая перебирает все школы, отправленные обратно контроллером, очищает раскрывающийся список школ и добавляет опции в раскрывающийся список по одному.

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