一般来说,我对Rails和Web开发都很陌生。我需要显示两个下拉菜单,州和学校,这样学校才会在用户选择州后显示,学校应该只显示所选州的学校。我不知道的是我如何使用状态选择来动态决定要显示的学校,而无需用户点击提交。我知道我可能需要使用JavaScript,但不了解JS,我不确定如何做到这一点。希望我有意义。谢谢!
答案 0 :(得分:3)
以下是基于JavaScript中已有的数据结构动态填充选择的a simple example。如果您需要在用户选择状态并返回学校列表后执行服务器请求,您将需要不同的代码(并且有助于像jQuery这样的库)。
答案 1 :(得分:2)
我认为你想用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附加到你的状态下拉列表,这样当它改变时,你拉出该状态的id并向你的控制器发出一个AJAX调用。该AJAX调用的最后一个参数是一个成功函数,它循环通过控制器发回的所有学校,清除学校下拉列表,并逐个向下拉列表添加选项。