我试图制作一个表单,在选择某些元素后,向表单添加元素.例如,在用户选择一个国家/地区后,我想要一个ajax调用,其中找到与该国家相关联的所有区域/状态,然后将其插入到表单中的select元素中.然后,一旦用户选择区域/状态,将发生相同的过程,并且另一个元素将被添加到窗体中以响应于所选择的值.作为一个旁观者,我想做的这一切都不明智.至于我在这个观点:
<%= form_tag(find_school_path,:method=>'get',:class => 'form-horizontal',:id => 'find_by_country_form') do %> <%= label_tag :country_selection,"Country" %> <%= select_tag :country_selection,options_from_collection_for_select(@countries,:id,:name),:prompt => "Country" %> <% end %>
然后在该视图的javascript文件的内部,我在选择一个国家/地区时处理ajax调用:
$('#country_selection').change(function(){ $.ajax({ url: "find/country_selection",type: "GET",data: {'country=' + $('#country_selection option:selected').value() },}) });
然后,在我的控制器里面,上面的url:路由到我有:
def country_selection @country = Country.find(params[:country]) @regions = @country.regions respond_to do |format| format.js { } end end
最后,在我的country_selection.js.erb文件中我有:
$('#country_selection').after('<%= label_tag :region_selection,"State/Region" %><%= select_tag :region_selection,options_from_collection_for_select(@regions,:prompt => "State/Region" %>');
我没有得到这个工作.我甚至不确定我是这样做的.当我点击选择并更改选项时,页面上的任何内容都会更改.
解
我的代码基本上是罚款,但’.change’事件没有得到承认.我把它改为’.live(‘change’,function(){…})’,它的工作很好.