Rails Ajax下拉菜单 - 无响应

时间:2016-06-11 06:06:52

标签: javascript jquery ruby-on-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

在我的application.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'

而我根本没有得到任何填充公司的东西。永远不会!

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

我是一个巨大的noobie,所以我确定我在这里遗漏了一些东西。什么?

1 个答案:

答案 0 :(得分:0)

您是否尝试过以不同方式添加选项?例如

           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);

你可以使用console.log(value);并查看您是否收到了填充的回复。