Rails Ajax 下拉菜单 - 没有响应



所以我用我正在编写的这个小程序解决了几乎所有的问题:

唯一剩下的一个,我只是在敲打我的头,是这样的。

这是您的标准两个下拉菜单,选择一个项目以填充另一个。

在我看来:

<%= 
  select_tag(  
      :contractor_id,
      options_from_collection_for_select(Contractor.all, "id", "appointment_record"), 
      :'data-remote' => 'true', 
      :'data-url' => url_for(:controller => 'contractors', :action => 'getdata'), 
      :'data-type' => 'json') 
%>

<%= 
   select_tag(
       :company_id, # name of selectbox
       )
%> 

在我的控制器中:

    def getdata
    @data_from_select1 = params[:contractor_id]
    @data_for_select2 = Company.where(: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

在我的应用程序中.js:

$(document).ready(function() {
  $('#contractor_id').live('ajax:success', function(evt, data, status, xhr) {
    var selectbox2 = $('#company_id');
    selectbox2.empty();
    $.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);
    });
  });
});

在我的路线中:

   get 'getdata' => 'contractors#getdata'

而且我只是根本没有任何东西填充 company.id。从来没有!

Contractor.id 填充得很好,所有名称都填写在那里,但没有返回任何内容 company.id

我是一个巨大的菜鸟,所以我确定我在这里错过了一些东西。什么??

您是否尝试过以其他方式添加选项?

例如
           var selectbox2 = $('#company_id');
           var option = document.createElement("option");
       //Adds the value
           option.value = value[0];
       // Adds in text
           option.innerHTML = value[1];
       // Appends the option to you select box
           selectbox2[0].appendChild(option);

你可以控制台.log(value);看看你是否得到了一个填充的响应。

最新更新