我的应用程序中有两个下拉框.
根据第一个组合框中选择的值,第二个下拉框中的值应该被填充.这些值应来自数据库.
根据第一个组合框中选择的值,第二个下拉框中的值应该被填充.这些值应来自数据库.
请帮帮我.
解决方法
这是一个使用
jquery-ujs(https://github.com/rails/jquery-ujs)的干净方法
在你看来:
<%= select_tag :first_select,# name of selectbox options_from_collection_for_select(@myrecords,"id","name"),# your options for this select box :'data-remote' => 'true',# important for UJS :'data-url' => url_for(:controller => 'MyController',:action => 'getdata'),# we get the data from here! :'data-type' => 'json' # tell jQuery to parse the response as JSON! %> <%= select_tag :second_select,# name of selectbox "<option>Please select something from first select!</option>" %>
您的控制器:
class MyController < ApplicationController def getdata # this contains what has been selected in the first select box @data_from_select1 = params[:first_select] # we get the data for selectbox 2 @data_for_select2 = MyModel.where(:some_id => @data_from_select1).all # render an array in JSON containing arrays like: # [[:id1,:name1],[:id2,:name2]] render :json => @data_for_select2.map{|c| [c.id,c.name]} end end
在你的application.js中:
$(document).ready(function() { // #first_select is the id of our first select box,if the ajax request has been successful,// an ajax:success event is triggered. $('#first_select').live('ajax:success',function(evt,data,status,xhr) { // get second selectbox by its id var selectbox2 = $('#second_select'); // empty it selectbox2.empty(); // we got a JSON array in data,iterate through it $.each(data,function(index,value) { // append an option var opt = $('<option/>'); // value is an array: [:id,:name] opt.attr('value',value[0]); // set text opt.text(value[1]); // append to select opt.appendTo(selectbox2); }); }); });
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。