Rails 自动完成(取决于选择)

Rails Autocomplete (depending on the choice)

我有这个:

# _form.html.erb
f.text_field :c,  data: {autocomplete_source: @correlations.all.map { |x| x.name }}<br>
f.text_field :n,  data: {autocomplete_source: @customers.all.map { |x| x.note}}

// Coffee script
$('#launch_c').autocomplete source: $('#launch_c').data('autocomplete-source')
$('#launch_n').autocomplete source: $('#launch_n').data('autocomplete-source')

我需要变量@customers 取决于相关性的选择... 谁能帮帮我?

如果我没理解错的话,这不是一件容易的事。基本上你需要这样的东西:

  • 将所有客户存储在页面上的嵌套 JSON 中,以便 Jquery 可以轻松查找给定关联的所有客户。 (如果有超过一百个 Customers 或 Correlations,您可能需要 AJAX 调用而不是将所有可能的记录预加载到页面中。)
  • Jquery 代码检测何时选择关联,获取该关联的客户数组,并使用相关数据重新初始化客户自动完成小部件。有关如何检测更改事件等的更多详细信息,请参阅 Jquery Autocomplete API documentation

结果可能看起来像这样 Jquery 代码:

$('#launch_c').autocomplete({
  source: $('#launch_c').data('autocomplete-source'),
  change: function(event, ui){
    var correlation_name = ui.item.value;
    var data = $('#launch_n').data('autocomplete-source')[correlation_name];
    $('#launch_n').autocomplete({ source: data });
  }
});

并且需要 #launch_n 才能有一个 data-autocomplete-source 嵌套 JSON 像这样的东西:

{
  "correlation1_name": ["customer1_name", "customer2_name", "customer3_name"],
  "correlation2_name": ["customer4_name", "customer5_name", "customer6_name"],
  "correlation3_name": ["customer7_name", "customer8_name", "customer9_name"],
  // etc.
}